二叉树知识

2023-11-06

二叉树有两种主要的形式:满二叉树和完全二叉树

满二叉树
如果一颗二叉树只有度为0和度为2,并且度为0的节点都在同一层的二叉树就是满二叉树

在这里插入图片描述
这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树

完全二叉树
在完全二叉树,
1.除了最底层可能没有填满,
2.其余每层都填满,
3.最底层中左子树没有的话后面节点也不能有

在这里插入图片描述
若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点

二叉搜索树
特点:
1.二叉搜索树是有序树
2.若他的左子树不为空,左子树的值小于根节点
3.若他的右子树不为空,右子树的值大于根节点

在这里插入图片描述

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

在这里插入图片描述
1.C++中map、set、multimap,multiset的底层实现都是平衡二叉搜索树
2.unordered_map、unordered_set,unordered_map、unordered_map底层实现是哈希表

二叉树的储存方式

1.链式存储----->链表
2.顺序存储---->数组

二叉树的遍历方式

二叉树主要有以下两种遍历方式:
1.深度优先遍历:先往深走,遇到叶子节点再往回走
2.广度优先遍历:一层一层的去遍历

有了这两种遍历之后进行拓展就有了以下遍历

深度优先遍历:
1.先序遍历
2.中序遍历
3.后续遍历
广度优先遍历
1.层次遍历

这里前中后,其实指的就是中间节点的遍历顺序,只要大家记住 前中后序指的就是中间节点的位置就可以了即父节点

前序遍历:中左右
中序遍历:左中右
后序遍历:左右中

在这里插入图片描述

经验:

1.我们做二叉树的时候经常用到递归的方式实现深度优先遍历,也就是实现前中后遍历,
2.栈其实就是递归的一种是实现结构,也就说前中后序遍历的逻辑其实都是可以借助栈使用非递归的方式来实现的
3.广度优先遍历的实现一般用队列来实现,这是由队列的先进先出的特点节点决定的,这样才能一层层遍历二叉树
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二叉树知识 的相关文章

  • 01 二叉树的BFS(广度、层次或水平遍历实现)【Binary Tree 二叉树】

    二叉树的遍历分为BFS和DFS两种大类 下面完整实现BFS遍历二叉树 例如二叉树 1 2 3 4 5 BFS遍历结果 1 2 3 4 5 具体的代码实现 方法一 采用递归遍历的方法实现 Recursive C program for lev
  • 二叉树经典题目

    1 判断一个节点是否在一棵二叉树中 先判断是否在左子树 若在 则不再去右子树中寻找 若不在 再去右子树中寻找 要注意递归的条件判断 bool IsInTree Node root Node node if root NULL node NU
  • 动态规划之在二叉树中使用DP

    二叉树染色 题目描述 文章目录 二叉树染色 题目描述 详细思路 个人走的弯路 可略 正确思路 代码实现 传送门 小扣有一个根结点为 root 的二叉树模型 初始所有结点均为白色 可以用蓝色染料给模型结点染色 模型的每个结点有一个 val 价
  • 树(Tree)——(六)平衡搜索二叉树理论篇

    目录 平衡 分类 最小不平衡子树 AVL Tree AVL树的失衡调整的四种情况 1 左单旋 RR 关键代码 例 补充 2 右单旋 LL 关键代码 3 右左双旋 RL 4 左右双旋 LR 总结 平衡 影响树的平衡的因素主要有 插入顺序 删除
  • 线索化二叉树,前序、中序以及后序遍历代码

    文章目录 节点代码 前 中 后序线索化以及遍历代码 测试代码 节点代码 class Node int value Node left 左子树 Node right 右子树 Node pre 父节点 左节点属性 若值为0 其指向的是子树 若值
  • 递增二叉树-网易游戏

    递增二叉树 网易游戏 题目描述 给定一个二叉树 每个节点有一个正整数权值 若一棵二叉树 每一层的节点权值和都严格小于下一层的结点权值和 责成这棵二叉树为递增二叉树 现在给你一棵二叉树 你需要判断其是不是一棵递增二叉树 输入描述 输入的第一行
  • JavaScript数据结构-树

    文章转自 JavaScript数据结构 树 我觉得这社会上 也不差钱好多人 可能好多人也不差权力 但是我觉得能得到这种满足的也不多 郭小平 lt 临汾红丝带学校校长 gt 树是计算机科学中经常用到的一种数据结构 树是一种非线性的数据结构 以
  • 二叉树的基本概念及性质

    文章目录 一 基本概念 二 二叉树的种类 二叉树 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 三 二叉树的性质 性质一 性质二 性质三 性质四 性质五 一 基本概念 树是 n 个结点的有限集 在任意一颗非空树中 1 有且仅有一个特定的
  • 数据结构中二叉树实现及部分操作

    谈二叉树之前 我们先来看看树的定义 树 由N N gt 0 个结点构成的集合 对N gt 1的树 1 有一个特殊的结点 称为根结点 根节点没有前驱结点 2 除根节点外 其余结点被分成M M gt 0 个互不相交的集合T1 T2 Tm 其中每
  • 计算二叉树的第k层中所有叶子结点个数

    计算二叉树的第k层中所有叶子结点个数 Time Limit 1000MS Memory Limit 65535K 题型 编程题 语言 无限制 描述 二叉链表表示的二叉树 按先序次序输入二叉树中结点的值 字符表示空树 构造二叉链表表示的二叉树
  • 有趣的数据结构算法16——线索二叉树的构建

    有趣的数据结构算法16 线索二叉树的构建 什么是线索二叉树 线索二叉树的实现形式 线索二叉树的代码实现 线索二叉树的初始化 线索的串联 全部实现代码 GITHUB下载连接 深度遍历不仅仅有递归的方法噢 还有通过建立线索二叉树进行遍历的方法
  • 二叉树采用二叉链表存储,求树的结点个数

    typedef struct BiTNode ElemType data struct BiTNode lchild rchild BiTNode BiTree void PrePrder BiTree T int num if T NUL
  • 剑指Offer07:重建二叉树(Java)

    题目描述 解法思路 一开始想了半个小时都没想出来 幸好得到大佬的帮助 终于做出来 嘻嘻 采用递归的思想 不断拆分左右子树即可 首先我们通过前序遍历可以看到这个树的根节点是3 然后通过中序遍历 我们可以知道9是左子树 15 20 7是右子树
  • 二叉查找树(BST)的基本概念及常用操作

    二叉查找树 二叉查找树 Binary Search Tree 也称二叉搜索树 有序二叉树 ordered binary tree 排序二叉树 orted binary tree 是指一棵空树或者具有下列性质的二叉树 若任意节点的左子树不空
  • 剑指 Offer 27. 二叉树的镜像 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 27 二叉树的镜像 1 递归算法 根据二叉树镜像的定义 考虑递归遍历 d f s mathrm dfs dfs 二叉树 交换每个节点的左 右子节点 即可生成 二叉树的镜像 递归解析
  • python二叉树类定义,列表转二叉树,leetcode本地调试

    如果想用本地IDE调试leetcode上的题目 可以使用以下辅助类 二叉树类定义 Definition for a binary tree node class TreeNode def init self x self val x sel
  • 由先序中序,或后序中序,可以唯一确定二叉树;完全二叉树的顺序存储,c/c++描述

    这是课本里的 两个定理 由先序 根左右 后序 左右根 可以确定根节点是哪个 由中序 左根右 可以确定左子树和右子树的范围 所以我们也找到了二叉树的左子树和右子树的先序 或后序 和中序排列 由归纳法 可得出这个构造二叉树链表的方法 对于完全二
  • 二叉树及其性质详解

    问题导读1 什么是二叉树 2 二叉树性质是什么 3 什么是完全二叉树 本节将给大家介绍一类具体的树结构 二叉树 简单地理解 满足以下两个条件的树就是二叉树 本身是有序树 树中包含的各个节点的度不能超过 2 即只能是 0 1 或者 2 例如
  • CH7-查找

    文章目录 1 查找的基本概念 2 线性表的查找 2 1 顺序查找 线性查找 算法2 1 0 类型定义 算法2 1 1 顺序查找 算法2 1 2 改进后的顺序查找 性能分析 2 2 折半查找 二分或对分查找 算法2 2 1 非递归算法 算法2
  • 二叉树的各种操作函数

    include source h 满与空的问题 计算个数时 判断rear和front的大小1 2 空一个 void InitQueue Queue u u front 0 u rear 0 int sizeQue Queue u int s

随机推荐

  • Ubuntu18.04安装ROS+gazebo9

    https blog csdn net qq 35683407 article details 106064918 1 安装ros Ubuntu18 04选择ROS Melodic 教程网址 http wiki ros org cn mel
  • 如何排查 IDEA 自身报错?

    这个问题是 2023 年 7 月 26 日遇到的 当时还是 IDEA 2023 1 4 结果文章还没写完 7 月 27 日自动给更新了 IDEA 2023 2 问题估计解决了 所以 本文就简单提一下 IDEA 自身报错的排查方法 规避 解决
  • Java基础冷知识

    lt 一 gt 全局变量和局部变量的区别 1 位置不一样 全局变量存在类下面 局部变量存在方法里面 全局变量的生命周期和对象有关 局部变量的生命周期和方法有关 2 修饰符 全局变量是可以加修饰符的 局部变量不可以 3 默认值问题 全局变量只
  • nodeName、nodeValue和nodeType节点介绍

    nodeName 元素节点的 nodeName 是标签名称 大写 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 text 文档节点的 nodeName 永远是 document 注释 nodeName 所包
  • 百度地图数据可视化

    如何使用百度地图 前往官方文档进行一系列注册 主要是为了获取服务密钥 新建HTML文件 进行示例代码编写
  • C语言 队列

    目录 一 队列概念 二 基础数组队列 三 基础链表队列 四 数组队列 函数 五 链表队列 函数 一 队列概念 先进先出 后进后出 第一个元素无数据 数组队列长度 根据数组长度决定 链表队列长度 根据电脑内存决定 二 基础数组队列 inclu
  • APP上架需要的准备和流程

    一上架iOS应用市场前的准备 1 选择适合自己的苹果开发者账号 1 个人账号 Individual 费用99美金一年 该账号在App Store销售者只能显示个人的ID 比如zhitian zhang 单人使用 个人账号只能有一个开发者 1
  • IDEA 导入Spring源码:找不到InstrumentationSavingAgent

    错误如下 Error 26 38 java 找不到符号 符号 类 InstrumentationSavingAgent 位置 程序包 org springframework instrument 解决方法 导入项目时选择 Use local
  • 记录vue.config.js中配置代理(devServer)不生效的坑(跨域问题处理)

    前后端分离后 会遇到跨域问题 导致后端响应的数据被浏览器 拦截 前端无法接收 往往就会导致类似下面的问题产生 大意就是请求地址不同源 导致了跨域问题 解决方法 使用vue cli脚手架 在vue config js文件中配置代理服务器 从而
  • canvas视频截图

    const videoEle document createElement video console log videoEle gt videoEle videoEle src https cn ph new rad q s3 cn no
  • easyexcel使用教程-导出篇

    easyExcel使用教程 导出篇 开始准备工作 1 导入Maven依赖
  • 恒合仓库 - 用户管理、用户列表、为用户分配角色

    文章目录 用户管理 一 用户列表 1 1 实体类 1 1 1 分页实体类 1 1 2 用户信息实体类 1 2 业务实现 1 2 1 UserMapper 1 2 2 Service层 1 2 3 Controller层 1 2 4 效果图
  • 【Locomotor运动模块】攀爬

    文章目录 一 攀爬主体 伪身体 1 伪身体 的设置 2 伪身体 和 真实身体 为什么同步移动 3 伪身体 和 真实身体 碰到墙时不同步的原因 现象 原因 解决 二 攀爬 1 需要的组件 伪身体 Climbing Climbable及Inte
  • LeetCode5359.最大的团队表现值——小顶堆与PriorityQueue

    文章目录 引入 解法 引入 在本周周赛中 有这么一道题 公司有编号为 1 到 n 的 n 个工程师 给你两个数组 speed 和 efficiency 其中 speed i 和 efficiency i 分别代表第 i 位工程师的速度和效率
  • 谷歌新一轮裁员,云计算部门 50 人首当其冲

    By 超神经 内容一览 近日 谷歌云计算部门传出裁员消息 称为了调整对国际市场的关注 将进行小规模的人员调整 虽然具体人数尚未公布 但知情消息透露约有 50 人会受到波及 在 2020 年度首次裁员的背后 又反映了谷歌在云计算市场怎样的处境
  • R语言中变量命名规则与反引号的使用

    反引号是针对不符合命名规则的变量名 参数名使用的 那么什么是命名规则呢 变量名称可包含英文字母 数字 下划线和英文点号 句号 所以不能有中文 空格 存在哦 不能以数字或下划线开头 开头必须是英文字母或者点 可以以点号开头 但点号后面的符号不
  • Django项目实现9.1匹配系统出现AttributeError: ‘LocMemCache‘ object has no attribute ‘keys‘

    一般出现这种问题是代码的错误 不能将其作为字典使用 然而我仔细检查了代码报错行后没有发现错误 因为y总说的是用cache key函数 我突然想起早期使用python3manage py shell时候 在acapp下的manage py操作
  • 青春看似荒唐

    知道吗 下雨了 你喜欢的花开了 如此坚强 雨伞在 门把上 楼下送走了新娘 美丽 就像你一样 我曾如此奢望 一路风霜能与你分享 又害怕会这样 依赖着 直到有一天 我们不再疯狂 请不要失望 哪怕平淡收场 青春看似荒唐 没人会选择投降 我懂你的倔
  • 我的第一次面试

    就在昨天 我进行了第一次人生中第一次 以前也面试过 但是都是在学校内 去公司面试 首先他叫到我的时候我就很激动 我觉得我要紧张了 叫到我 我就跟着面试官进了一个房间 房间里面还有一个类似阳台那样一小块地方 一边是窗外 其他都是玻璃墙 我进去
  • 二叉树知识

    二叉树有两种主要的形式 满二叉树和完全二叉树 满二叉树 如果一颗二叉树只有度为0和度为2 并且度为0的节点都在同一层的二叉树就是满二叉树 这棵二叉树为满二叉树 也可以说深度为k 有2 k 1个节点的二叉树 完全二叉树 在完全二叉树 1 除了