参考笔记:代码随想录
二叉树的种类:
满二叉树、完全二叉树、二次搜索树、平衡二叉搜索树
满二叉树:
只有为0的节点和为2的节点,并且为0的节点在同一层上。满二叉树的深度为k,那么树的节点就是2^k-1 。
完全二叉树:
最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。也就是是从左到右填满的。
二叉搜索树:
二叉搜索树的树上是有数值的,它是一颗有序树,它的数值排序为:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉排序树
平衡二叉搜索树:
平衡的点在于它的左右两个子树的高度差的绝对值不超过1。
二叉树的存储方式:
二叉树可以链式存储(经常),也可以顺序存储。
链式存储就是使用指针(这里就有左指针和右指针),顺序存储就是使用数组。
顺序存储的方式如下:
如果父节点的数组下标是i,那么它的左边指向的树的下标是i*2+1,右边是i*2+2。
二叉树的遍历方式:
它主要分两种遍历方式:深度优先遍历和广度优先遍历。
深度优先遍历:
前序遍历:中左右(递归法,迭代法)
中序遍历:左中右(递归法,迭代法)
后序遍历:左右中 (递归法,迭代法)
广度优先遍历:也就是层序遍历(一层一层的去遍历)。
二叉树的链式存储的节点定义方式:
python:
class TreeNode:
def __init__(self,val,left = None,right = None):
self.val = val
self.left = left
self.right = right