代码改变世界

二叉树:基本术语和重要性质

2016-03-04 17:06  宏愿。  阅读(1693)  评论(0编辑  收藏  举报

 

一、树的基本术语:

子树的概念:树是n(n≥0)个节点的有限集合。任意一颗非空树中:(1)有且仅有一个特定的称为根(root)的节点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称其为根的子树

树的结点包含一个数据元素及若干指向其子树的分支。

结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶子(Leaf)。度不为0的结点称为分支结点。除了根节点之外,分支结点也称为内部结点

树的度是树内各结点的度的最大值。节点的层次(Level)是从根开始定义起,根为第一层,根的孩子为第二层,若某节点在第L层,则其子树的根就在第L+1层。树中节点的最大层次称为树的深度(Depth)或高度。

若果将树中节点的各子树看成从左至右是有次序的(即不能互换),则称为该树是有序树,否则称为无序树

森林(Forest)是m(m≥0)颗互不相交的树的集合

 

二、二叉树的重要性质:

清华大学《数据结构(C语言版)》一书中对二叉树的解释很明确:

二叉树(Binary Tree)是一种树形结构,特点是每个节点至多只有两颗子树(二叉树中不存在度大于2的节点),并且二叉树的子树有左右之分,其次序不能够任意颠倒。

 

性质1:在二叉树的第i层上至多有2(i-1)个结点(i≥1);

如:第1层最多只有一个结点,第2层最多只有2个结点,第3层最多只有4个结点。

性质2:深度为k的二叉树至多有2k-1个结点(k≥1);

性质3:对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点个数为n2,则有n0=n2+1。

 

一颗深度为k且有2k-1个结点的二叉树称为满二叉树

可以给满二叉树进行编号,约定编号从根结点起,从上而下,从左至右。由此可以引出完全二叉树的概念。

深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树

 

完全二叉树在很多场合下都有应用,下面是完全二叉树的两个重要性质

性质4:具有n个节点的完全二叉树的深度为[log2n]+1(注:[x]表示不大于x的最大整数,如[2.2]=2)。

性质5:如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i(1≤i≤n),有:

① 如果i=1,则结点i是二叉树的根,无双亲;如果i≥1,则其双亲PARENT(i)是节点[i/2] 。

② 如果2i>n,则结点i无左孩子(节点i为叶子节点);否则其左孩子LCHILD(i)是节点2i 。

③ 如果2i+1>n,则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1 。