跟随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
链式表示方式便于理解,一般都用链式存储二叉树(所以喔,数组依然可以表示二叉树)。
深度优先遍历
栈实现【栈是递归的一种实现结构】中间节点的遍历顺序,可细分为三种遍历方式:
中左右左中右左右中
递归遍历代码迭代遍历代码广度优先遍历
📝一层一层地去遍历
⭐️借助队列实现
层次遍历(迭代法)