您的位置:首页 > 其它

二叉树与树的理解

2016-08-16 11:26 176 查看
二叉树性质及结论的证明,天然地依赖于递归,而涉及到递归时,一般采用的证明方法为:数学归纳法

1. 树形结构 vs 线性结构

树形结构是复杂数据结构中最为简单的一类结构;

树形结构不但本身很有用,还反映了许多计算过程的抽象结构;

树形结构的结点形成一种层次结构;

树和链表、队列、栈等结构一样,也是一些基本元素的汇集,单元素之间不是简单的线性关系(在一个包含 n 个元素的数据结构里),可能存在更为复杂的联系。这种情况下,在一个包含 n 个元素的数据结构里,元素之间的最远距离就不是 n,可能小得多。

树形结构也是由结点(结构中的逻辑单元,可用于保存数据)和结点之间的连接关系(一种后继关系)构成,但其结构与线性结构(表)不同,最重要的特征包括:

一个结构如果不空,其中就存在着唯一的一个起始节点,成为树根(root)

按结构的连接关系,树根外的其余结点都有且只有一个前驱(这点与线性结构一样),但另一方面,一个结点可以有 0 个或者多个后继(与线性结构不同)。另外,在非空的树结构中一定有些结点并不连接到其他结点。这种结点与表的尾节点性质类似,但在一个树结构里可以存在多个这种节点

结构里的所有结点都在树根结点通过后继关系可达的结点集合里。换句话说说,从树根节点出发,经过若干次后继关系可以到达结构中的任一个结点;

结点之间的联系不会形成循环关系,这也就说明,结点之间的联系形成了一种序,但一般而言不像线性表那样形成一个全序;

从这种结构里的任意两个不同结点出发,通过后继关系可达的两个结点集合,或者互不相交,或者一个集合是另一个集合的子集;

2. 二叉树:概念及性质

一个结点的关联结点数可以为 0、1 和 2;

一个二叉树可以有五种形态,

空二叉树

单点树(只包含一个结点,也即根节点)

根节点和左子树

根节点和右子树

根节点+左子树+右子树

当然也可以这样理解,根节点、左子树、右子树,三方面的内容,每个有两种状态,有或者无,共两种,因此 23=8,但要排除:

只有左子树;

只有右子树;

有左子树,右子树,但没有根;

8 - 3 = 5,

2.1 性质:非空二叉树第 i 层中至多有 2i 个结点(i≥0)

数学归纳法进行证明,i→2i ⇒ i+1→2i⋅2=2i+1

2.2 性质:高度为 h(从 0 开始算起)的二叉树至多有 2h+1−1 个结点

20+21+⋯+2h=2h+1−12−1

2.3 性质:非空二叉树 T,如果其叶节点的个数为 n0(度为 0),度数为 2 的结点个数为 n2,那么 n0=n2+1

可以根据二叉树的 5 种不同形态,通过数学归纳法进行证明,由于条件中说了非空,那么只需考虑后续的 4 种形态。设 T 是二叉树,L(T) 表示 T 中叶节点的个数,B(T) 表示 T 中度数为 2 的结点的个数。

显然对于单点二叉树,结论是成立的;

归纳 1:如果二叉树 T包含根节点 r 且只有左子树 T1,根据归纳假设,L(T1)=B(T1)+1,又整个二叉树

归纳 2:如果原二叉树 T 包含根节点 r 和非空左右子树 T1,T2,由归纳假设:

L(T1)=B(T1)+1L(T2)=B(T2)+1

又对整颗二叉树而言,L(T)=L(T1)+L(T2),B(T)=B(T1)+B(T2)+1

所以:

L(T)=B(T)+1

3. 二叉树的遍历

每棵二叉树有唯一的根节点,可以将其看作这棵二叉树的唯一标识(根之于二叉树,好比主键之于一条记录),是基于树结构的处理过程的入口(状态空间的初始状态)。也即从根节点出发,能找到树中所有信息,其基础是从父节点找到两个子节点。

因此,实际中常用二叉树的根节点代表这棵二叉树,其左右子树由它们各自的根节点代表。

二叉树 ⟺ 根 ⇒ (左子树,右子树)

二叉树的每个结点可能保存一些数据,因此也是一种汇集型的数据结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: