二叉树、满二叉树、完全二叉树

二叉树:每个结点至多有两个子树

满二叉树:每一层的结点个数都是最大结点数

完全二叉树:叶子节点在最后两层;对于任一结点,左子树的深度比右子树深度大1或者相等

性质:

二叉树:第i层,至多有2^(i-1)个结点

二叉树:深度为k的二叉树,至多有(2^k)-1个结点

满二叉树:深度为k的满二叉树的结点个数为(2^k)-1 

二叉树:任何一个二叉树,度为0的结点的个数n0,度为1的结点的个数n1,度为2的结点的个数的关系: n0 = n2+1,总的结点个数n

  原因:n0+n1+n2 = n  除了根节点之外,其它几点都有一个分支进入分支个数n-1,分支都是由度为1或者度为2的结点发出的  n1+2*n2 = n-1   根据这两个公式得到n0=n2+1

完全二叉树:任何一个具有n个结点的完全二叉树的深度为 log以2为底n向下取整 + 1

完全二叉树:任何一个完全二叉树按照层次为结点编号

  i=1,该结点是完全二叉树的根,无双亲

  i>1,该节点不是根,该结点的双亲的编号为i/2向下取整

  一个结点的编号是i,如果2*i大于n,表明该结点没有左孩子,否则,左孩子编号为2*i

  一个结点的编号是i,如果2*i+1大于n,表明该结点没有右孩子,否则,右孩子编号为2*i

存储

(1)顺序存储

用一组地址连续的存储单元将二叉树从上到下从左到右按顺序存储,存储成对应的完全二叉树的形式(完全二叉树中编号为i的结点存储在数组下标为i-1的分量中),如果某个结点不存在,该位置存0

数组的长度(2^k)-1   二叉树的深度为k,空间浪费

(2)链式存储

数据域 左孩子 右孩子

指针域有浪费:含有n个结点的二叉树有n+1个空指针域    有n个结点,就有2*n个指针域,就有n-1个分支,所以,有n+1个指针浪费

 

 遍历

前序

中序

后序

 

 

猜你喜欢

转载自www.cnblogs.com/duanjiapingjy/p/9545300.html