M叉树

Author : 张一极

22:32-20201103

m=2 性质

1.二叉树的第i层至多有个结点,i>=1

2.深度(高度)为k的二叉树至多有个结点,至少有k个结点

3.任何叶子节点为,度为2的结点为,则,总边数为B,B = n-1

4.n个结点的二叉树高度至少为log(2n)+1

m!=2 性质

高度为h的m叉树至多有个结点

完全二叉树

每一个节点都能在满二叉树上找到对应相同的编号和位置

如果某个结点, 为分支结点,如果大于它,即为叶子结点,因为满二叉树的编号中,叶子结点的一半取下界,必然为父结点的编号,故最后一个叶结点的编号除以二,得到的是其父节点的编号,更大的话,就是父结点的相邻结点,这个相邻结点必然没有子结点(如果有的话,最后一个叶子结点的位置应该在他下面),所以大于这个数值的节点,一定是叶子结点.

度为1的结点只能有一个,因为是完全二叉树

并且一定是编号最大的叶子结点的父节点.

平衡二叉树(AVL)

左右子树高度相差不超过1的树称为平衡二叉树

这种高度差称为平衡因子.

以类实现二叉树

image-20201115223905968

简单实现了一个具有根节点和子列表的嵌套列表,此时,添加左子树到root,需要在第二个地方插入新列表

python实现

 

线性表示(遍历)

前序遍历

到达结点,输出结点,访问左子结点,最后访问右子节点

前序遍历的递归实现

前序遍历非递归实现

中序遍历

到达结点,先访问左子结点,再输出该节点,最后访问右子结点

递归实现

非递归实现

后序遍历

先访问子树,后访问节点的访问顺序

Reference from https://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html

层次遍历

非递归实现

End

21:00-20201104