Lazy loaded image
二叉树
00 min
2025-1-8
Completed
标签
二叉树
相关企业
难度
简单

二叉树种类

二叉树包括普通二叉树、满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树、红黑树、B树、B+树、B*树

普通二叉树

普通二叉树没有任何性质,每个节点的子节点可以是0或1或2

满二叉树

满二叉树的每一层节点都有两个子节点

完全二叉树

完全二叉树除了最后一层不是满的,其余层全是满的,且最后一层的所有节点都在左边

二叉搜索树

二叉搜索树的每个节点的左节点(如果存在)的值小于当前节点的值,右节点(如果存在)的值大于当前节点的值

平衡二叉搜索树

在二叉搜索树的基础上更加平衡,一个节点的左右两个树的高度差不大于1

红黑树、B树、B+树、B*树

待完善……

二叉树的存储方式

二叉树主要是以链表格式存储,也可以使用数组格式存储

链表存储

每个节点包括一个val、一个左节点和一个右节点,直接访问left或right即可到达当前节点的左节点和右节点

数组存储

数组存储以顺序存储的方式,按每行依次填入数组,看起来可能更直观,但当想找到当前节点的左右节点时就比较麻烦。如下标i的左节点为i*2+1,右节点为i*2+2
notion image

二叉树的遍历

二叉树的所有遍历,无论如何修改都逃不出前序遍历、中序遍历、后续遍历和层序遍历。前三个多用递归实现,层序遍历多用队列实现。以下遍历举例,都以下图的二叉树为例,以当前二叉树的根节点4来划分,分为左,中,右。
notion image

前序遍历

这里的前,指的是”中左右”里“”的位置在前。在遍历一个节点的时候,先输出中节点,也就是自己的值,再输出当前节点的左节点的值,再输出当前节点右节点的值。下面一步步展示当前二叉树的前序遍历
下面是前序遍历这个以root为根节点的树的代码实现

中序遍历

类似的,这里的中,指的是”左中右”里的”中”的位置在中间。在遍历每一个节点的时候,先输出当前节点的左节点的值,再输出中节点,也就是自己的值,再输出当前节点右节点的值,下列步骤同上
下面是中序遍历这个以root为根节点的树的代码实现

后序遍历

类似的,这里的后,指的是“左右中”里的“中”的位置在最后。在遍历每一个节点的时候,先输出当前节点的左节点的值,再输出当前节点右节点的值,再输出中节点,也就是自己的值,下列步骤同上
下面是后序遍历这个以root为根节点的树的代码实现

层序遍历

层序遍历与前三者不同,多用队列来实现,和其名字一样,就是一层一层的遍历输出二叉树的值
上一篇
空白文章
下一篇
示例文章