跟随carl代码随想录刷题
语言:python
本文为笔者学习二叉树的笔记,主要内容来自于代码随想录。
二叉树的定义与链表差不多,只不过二叉树的节点里多了两个指针
:指向左右孩子。
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
形式
【不包含数值】:
度为0
的节点和度为2
的节点,并且度为0
的节点在同一层上。k
时,有2^k - 1
个节点。最左边的若干位置
。若最底层为n层
,则该层包含1~2^(h-1)
个节点。堆
就是一个完全二叉树二叉搜索树
是有序树
小于
它的根节点的值。大于
它的根节点的值。空树
或左右两个子树的高度差的绝对值不超过1
,并且左右两个子树
都是一棵平衡二叉树
常用的容器底层
是如何实现的链式存储
顺序存储
如果父节点的数组下标是i
,那么它的左孩子就是i*2+1
,右孩子就是i*2+2
链式表示方式便于理解,一般都用链式存储二叉树(所以喔,数组依然可以表示二叉树
)。
深度优先遍历
栈
实现【栈是递归的一种实现结构】中间节点的遍历顺序
,可细分为三种遍历方式:
中左右
左中右
左右中
递归遍历
代码迭代遍历
代码广度优先遍历
📝一层一层地去遍历
⭐️借助队列
实现
层次遍历(迭代法)