二叉树

Posted sybil-hxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树相关的知识,希望对你有一定的参考价值。

1.(二叉)树类型

满二叉树:

“满二叉树(full)”的定义在国内和国外完全不同,国内指“完美二叉树(perfect)”,国外指“正则二叉树(strict)”,所以我建议国内外都取消“满二叉树(full)”这个叫法,这样就没有不必要的麻烦了;

完全二叉树:层序从左到右,中间不跳过;

正则二叉树:每个结点要么出度是2,要么为0(叶子);

完美二叉树:若其所有树叶层次相同,称为二叉完全正则树;

平衡二叉树:又称AVL树,树的左右子树的高度差不超过1的数,空树也是平衡二叉树的一种;

借个图:                   技术图片

最优二叉树:哈夫曼树,WPL=∑w·l,带权路径长度最小;

最小生成树:(不是二叉树)n个结点的图,连接所有结点的路径和最小且非环,cruskal(min+非环)和prim(相连min+非环)两种算法;

二叉搜索树:BST,中序遍历为升序。适用于内存的重要树形索引,常用红黑树、伸展树维持平衡;

B/B+树:外存常用;

2.二叉树性质

(1) 第h层的结点总数最多为2^(h-1)个;

(2) 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;

可以用二进制理解(假如h=4):1+2+4+8 = 01111 = 10000-1 = 2^h -1;

(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;

(4) 具有n个结点的完全二叉树的深度为int(log2n)+1;

(5) 有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:

若a为结点编号,

如果a!=1,则其父结点的编号为a/2;(sql中"<>"也表示!=)

如果2*a<=N,则其左儿子(即左子树的根结点)的编号为2*a;

若2*a>N,则无左儿子;

如果2*a+1<=N,则其右儿子的结点编号为2*a+1;

若2*a+1>N,则无右儿子;

(6)给定N个节点,能构成h(N)种不同的二叉树;(还不太懂--_--)

h(N)为卡特兰数的第N项,h(n)=C(n,2*n)/(n+1);

 

参考:

https://blog.csdn.net/iteye_18800/article/details/82479348

https://blog.csdn.net/yuwushuang11/article/details/78628071

以上是关于二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树及特殊二叉树(满二叉树完全二叉树二叉排序树平衡二叉树)的定义和性质(附详细推理过程)

二叉树二叉树的镜像

普通二叉树二叉查找树平衡二叉树常见操作汇总

SDUT 3341 数据结构实验之二叉树二:遍历二叉树

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

SDUT 3341 数据结构实验之二叉树二:遍历二叉树