概念:日常生活中树随处可见,但数据结构中的定义的树比较有趣,它是我们所见真实树的倒置,然后再抽象的一种结构,比较有意思。那么二叉树呢?见名知意,只有两个分叉的树。数据结构书中的解释为度不超过2的树,何为度?度的意思是当前结点有几个分叉就是几度。那又何为结点呢?个人理解分叉的地方都是结点,树的叶子也是结点,称为叶子结点!
是不是觉得有些抽象,那么下面咱们画图说一下,看图就比较好理解了。
图 1 图 2
先看图1: 节点有:A,B,C,D,E,F,G 叶子结点: D,E,F,G 其中结点A又被称为根节点。
结点A,B,C分别都有两个子节点,所以他们的度为2,叶子结点D,E,F,G的度为0。
再看图2: 只是比图1多了一个结点T,他同样也是叶子结点,因为A多了一个子节点,所以A结点的度为3,它就不能被称为二叉树。
二叉树的性质
当我们明白了什么是树,什么是二叉树,我们应该看看这种非线性的结构究竟有哪些特点以及性质。
性质1:非空二叉树中的叶子结点的数量等于双分支结点(度为2的结点)的数量加1.
我们看图1二叉树结构,双分支结点的数量为3,叶子结点有4个,符合性质1。但是图2不符合改性质,为什么?因为它不是二叉树。哈哈!
当然也有计算类似图2中树叶子结点数量的公式,套用即可。其中N代表叶子结点数量,度为1的结点数量为n1,度为2的结点数量为n2,度为3的结点数量为n3,.......度为m的结点数量为
。看图2,度为1的结点数量为0,度为2结点的数量为2,度为3的结点数量为1个,则N=1+1*2+2*1=5。
性质2:二叉树的第i层上最多有(i>=1)个节点。
图1中DEFG处于第三层,=4个结点,记住这是最多这么多个结点。
性质3:高度(或深度)为i的二叉树最多有(i>=1)个节点。也可以认为高度为i的二叉树有
个结点,那么该二叉树为满二叉树。
图1二叉树的高度为3,最多有7个结点。因为图1的二叉树有7个结点,那么类似这种二叉树就叫做满二叉树。
性质4:给定n个结点,能够成种不同的二叉树,
。