AlgorithmDay14

news2024/10/6 12:26:49

day14

二叉树基础

二叉树的种类

满二叉树

只有度为0和2的结点,并且度为0的结点在同一层

(深度为k 有2^k-1个结点)

完全二叉树

除了最底层可能每天,其余都填满了,

并且最底层的结点集中在该层的左边位置。

image-20240416110140250

二叉搜索树

这是有序树,有数值的。左<根<右(中序)

平衡二叉搜索树

大名鼎鼎的avl树

它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

首先是(二叉搜索树的左根右)

其次是(高度差不超过1的平衡树)

map set 都是平衡二叉搜索树 增删是logn

只要加上onordered底层则是哈希表。

二叉树的存储方式

可顺序:数组

可链式:指针

二叉树的遍历方式

二叉树主要有两种遍历方式:

  1. 深度优先遍历:先往深走,遇到叶子节点再往回走。

  2. 广度优先遍历:一层一层的去遍历。

    深度优先遍历

    • 前序遍历(递归法,迭代法)
    • 中序遍历(递归法,迭代法)
    • 后序遍历(递归法,迭代法)

    广度优先遍历

    • 层次遍历(迭代法)

20200806191109896

二叉树的定义

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

二叉树的递归

递归的三要素:终 本 返

(终止条件 本层循环 返回值)

二叉树的前序遍历(递归写法)

class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& vec) {
        if (cur == NULL) return;
        vec.push_back(cur->val);    // 中
        traversal(cur->left, vec);  // 左
        traversal(cur->right, vec); // 右
    }
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        traversal(root, result);
        return result;
    }
};

一定要vector&vec

原因:需要操作原始result,使用引用传递。而非值传递。

中序和后序只需要:

改变 如下三行代码的位置。

vec.push_back(cur->val);    // 中
traversal(cur->left, vec);  // 左
traversal(cur->right, vec); // 右

完成三道题:前序 后序 中序 注意终止条件!

对应:leetcode 144,145,94

二叉树的迭代

统一迭代

先放过了,考递归解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1602246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习引领金融革命:重塑金融服务领域新格局,开启智能化新篇章

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

C:Jump and Treasure(单调队列优化DP+调和级数)

题意&#xff1a;给你一个0到n的柱子&#xff0c;一开始在0&#xff0c;需要跳到大于n的地方&#xff0c;每个柱子上有个得分&#xff0c; 且限制了最大跳跃步数&#xff1b; 思路&#xff1a;一般很容易想到一个 n*p 时间复杂度的DP , 表示以 i 为结尾的最大得分然后枚举前p…

【4月17日】阿里云 腾讯云 京东云 2-64G服务器选择对比 配置、价格全盘点 搭建博客、网站、个人开发建议收藏

更新日期&#xff1a;4月17日&#xff08;阿里云继续保持1.5折&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实…

socket编程——tcp

在我这篇博客&#xff1a;网络——socket编程中介绍了关于socket编程的一些必要的知识&#xff0c;以及介绍了使用套接字在udp协议下如何通信&#xff0c;这篇博客中&#xff0c;我将会介绍如何使用套接字以及tcp协议进行网络通信。 1. 前置准备 在进行编写代码之前&#xff…

最新版idea 合并分支方法

前言 以下是最新版的idea2024&#xff0c;如果有人找不到按键可能是因为版本不同。 操作步骤 看右小角我的分支是submit&#xff0c;现在我要将test合并到我的submit分支上 找到test分支&#xff0c;选择update&#xff0c;这一步会拉取相应分支内容等同于pull 选择merge 选…

能源成果3D网络三维展厅越发主流化

在这个数字化飞速发展的时代&#xff0c;我们为您带来了全新的展览形式——线上3D虚拟展厅。借助VR虚拟现实制作和web3d开发技术&#xff0c;我们能够将物品、图片、视频和图文信息等完美融合&#xff0c;通过计算机技术和3D建模&#xff0c;为您呈现一个逼真、生动的数字化展览…

【保姆级】frp内网穿透

场景&#xff1a;本地调试微信生态的回调时&#xff0c;如果全用线上调试&#xff0c;那就太恶心人了&#xff0c;所以我们今天简单说下frp内网穿透 一、安装和配置 frp下载地址&#xff1a; https://github.com/fatedier/frp/releases 简单说一下&#xff1a; 服务器用的是f…

包装类的认识

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…

储能的全生命周期成本即平准化度电成本的计算方法及python实践

1. 平准化度电成本&#xff08;LCOE&#xff09;是一种衡量电力项目经济性的指标 LCOE&#xff08;Levelized Cost of Energy,&#xff09;的概念最早由美国国家可再生能源实验室&#xff08;NREL&#xff09;在1995年提出&#xff0c;它是通过将一个项目生命周期内的所有成本…

什么牌子的短袖t恤质量好?2024年高品质短袖推荐!

什么牌子的短袖质量好&#xff1f;最近大部分地区的天气都比较热&#xff0c;大家对短袖的关注度日益提升。然而作为一名十年以上的经验的服装测评师&#xff0c;我必须强调市面上有许多所谓网红品牌&#xff0c;虽然广告营销做得沸沸扬扬&#xff0c;但对短袖的做工、细节方面…

ELK日志分析系统(上)

目录 引言 一、ELK日志分析系统简介 1.1 日志服务器 1.2 ELK日志分析系统的组成 1.3 日志处理步骤 二、Elasticsearch介绍 2.1 概述 2.2 核心概念 三、Logstash介绍 3.1 概述 3.2 主要组件 四、Kibana介绍 4.1 概述 4.2 主要功能 五、ELK的工作原理 六、部署ELK…

二维码电子画册制作教程,教你如何做出高端作品!

当今社会&#xff0c;二维码已经成为了信息传递的重要方式之一&#xff0c;其在电子商务、广告营销、活动推广等领域广泛应用。而如何将二维码巧妙地融入电子画册中&#xff0c;制作出高端、具有吸引力的作品&#xff0c;成为了许多设计师和营销人员关注的焦点 但是很多人却不知…

HTTP协议详解:从URL到HTTP报文的全貌

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 前言 随着互联网的飞速发展&#xff0c;HTTP协议作为支撑网络应用的核心基石&#xff0c;扮演着举足轻重的角色。无论是日常的…

LDR6028,充电听歌两不误!

当前市场上的手机普遍取消了3.5mm耳机接口&#xff0c;仅保留Type-C接口。然而&#xff0c;对于音质和零延迟有追求的用户&#xff0c;仍倾向于选择3.5mm有线耳机&#xff0c;特别是在玩游戏时&#xff0c;音画同步至关重要。因此&#xff0c;Type-C转3.5mm接口线应运而生&…

Oracle11.2.0.1,(CVE-2012-1675)漏洞解决方案

1.进入容器停止监听 docker exec -it -u 0 oracle11g bash su - oracle lsnrctl stop listener2.找到监听配置文件位置&#xff0c;修改监听文件 echo $ORACLE_HOMEvi network/admin/listener.ora #在文件底部添加 SECURE_REGISTER_LISTENER (IPC) #启动监听 lsnrctl start …

《量化投资以Python为工具》目录

《量化投资以Python为工具》 获取链接&#xff1a;《量化投资以Python为工具》 更多技术书籍&#xff1a;技术书籍分享&#xff0c;前端、后端、大数据、AI、人工智能... ​ ​ ​ ​

【实战】Dubbo应用可观测性升级指南与踩坑记录

应用从dubbo-3.1.*升级到dubbo-*:3.2.*最新稳定版本&#xff0c;提升dubbo应用的可观测性和度量数据准确性。 1. dubbo版本发布说明(可不关注) dubbo版本发布 https://github.com/apache/dubbo/releases 【升级兼容性】3.1 升级到 3.2 2. 应用修改点 注意&#xff1a;Sprin…

大模型用到的位置编码汇总(面试)

不同于RNN、CNN等模型&#xff0c;对于Transformer模型来说&#xff0c;位置编码的加入是必不可少的&#xff0c;因为纯粹的Attention模块是无法捕捉输入顺序的&#xff0c;即无法区分不同位置的Token。为此我们大体有两个选择&#xff1a;想办法将位置信息融入到输入中&#x…

第一部分-基础入门-学习导航

专题地址:MacOS一站式程序开发系列专题 第一部分:基础入门学习导航 OSX-01-Mac OS应用开发概述:简单介绍下MacOS生态、Xcode使用以及使用Xcode创建app的方法OSX-02-Mac OS应用开发系列课程大纲和章节内容设计:介绍下此系列专题的文章内容组织形式以及此系列专题的覆盖内容…

OpenHarmony轻量系统开发【1】初始OpenHarmony

1.1系统类型 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c;目标是面向全场景、全连接、全智能时代&#xff0c;基于开源的方式&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互…