数据结构:二叉树

二叉树(一对多)

树:

树:由根节点和若干个子节点构成的具有一对多关系的数据的集合,称为树形结构。

空树:一个节点都没有

节点:

根节点:最顶层的结点

叶子节点(终端节点):向后没有子节点的节点

分支节点(非终端节点):有子节点的节点

度:

树的深度:数的层数

树的度(数的广度):树中节点最大的度是该数的广度
节点的度:节点的子节点个数

叶子节点的节点的度为0

二叉树:

二叉树:树的广度为2的树形结构,且各节点的左右子节点不能交换

满二叉树:在不增加层数的情况下,无法再增加一个节点

K层满二叉树:第K层的节点个数:2^(K-1)

K层总共节点个数:2^K-1
完全二叉树:在满二叉树基础上,按照从左到右,从上到下依次增加节点的树形结构

在满二叉树基础上,按照从下到上,从右到左依次删除节点的树形结构

满二叉树一定是完全二叉树

二叉树的遍历:

前序遍历:根、左子树、右子树

中序遍历:左子树、根、右子树

后序遍历:左子树、右子树、根

层序遍历:从上至下、从左至右

其中,前中后序为深度优先遍历算法,层序为广度优先遍历算法

已知前序(/后序)和中序遍历结果·,可以唯一还原一棵二叉树

API:

1.创建二叉树

2.前序、中序、后序遍历

3.获取节点个数

4.获取树的层数

5.层序遍历

6.销毁树

相关推荐
1-1=02 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20272 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
布莱克60512 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH15 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
zh_xuan21 小时前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
白杨尚青1 天前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
likexuec2 天前
数据结构(2)
数据结构
D e re k ZH2 天前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶2 天前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
十二3 天前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯