5 树

1、定义:

树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。在任意一棵非空树中:

(1) 有且只有一个特定的称为根(root)的结点;

(2) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树(Subtree)

强调两点:

(1) n>0时,根节点是唯一的,,不可能存在多个根节点;

(2) m>0时,子树的个数没有限制,但它们一定是是互不相交的。

2、度:

结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶节点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根节点之外,分支结点也成为内结点。树的度是内各结点的度的最大值。

3、结点的层次:

结点的层次(Level)从根开始定义起,根为第一层,跟的孩子为第二层。树中结点的最大层次称为树的深度(Depth)或高度。

4、有序树:

如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。

5、树的存储结构

主要有双亲表示法、孩子表示法、孩子兄弟表示法。下面章节将具体进行介绍。

6、二叉树:

二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

特点:

(1) 每个结点最多有两棵树,所以二叉树中不存在拟度大于2的结点。注意不是只有两棵子树,而是最多有。没有子树或者由有一棵子树都是可以的。

(2) 左子树和右子树是有顺序的,次序不能任意颠倒。

(3) 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。

性质:

(1) 在二叉树的第i层上至多有2i-1个结点(i>=1)

(2) 深度为k的二叉树至多有2k-1个结点(k>=1)

(3) 对任意一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1

(4) 具有n个结点的完全二叉树的深度为logn(取整)+1

(5) 如果对一棵有n个结点的完全二叉树的结点按照层序编号,对任意结点i有:

          ① 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点i/2(取整)

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

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

原文地址:https://www.cnblogs.com/xlzfdddd/p/9857085.html