数据结构(十五)二叉树

来源:互联网 发布:淘宝运费险怎么退运费 编辑:程序博客网 时间:2024/06/01 07:48

二叉树的定义

二叉树:n个结点的有限集合,该集合或者为空集,,或者有一个根结点和两棵互不相交的,分别成为根结点和两棵互不相交的,分别称为根结点的左子树和右子树的二叉树组成.

 

二叉树特点:

每个结点最多有两颗子树。

左右子树有顺序,次序不能颠倒。

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

 

特殊二叉树

1.      斜树 左斜树:所有结点都只有左子树

       右斜树:所有结点都只有右斜树

2.      满二叉树 :所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。

3.      完全二叉树:对一颗具有n个结点的二叉树按层序编号,如果编号为i(1<i<n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这棵树称为完全二叉树。

例:

 

二叉树的性质

1.      在二叉树的第i层层上至多有2^i-1 个结点

2.      深度为k的二叉树至多有2^k – 1 个结点

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

4.      具有n个结点的完全二叉树的深度为[log2n] + 1

5.      如果对一颗有n个结点的完全二叉树(深度为[log2n] + 1)的结点按层序编号,对任一结点i有:

i = 1 根结点,无双亲

i > 1 双亲是结点[i / 2]

2i > n, 无左孩子 2i + 1 > n 结点i无右孩子

 

 

二叉树的存储结构

1.      完全二叉树的顺序存储

2.      二叉链表

 

二叉树的遍历:从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。

遍历方法:

1.      前序遍历:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,在前序遍历右子树。

2.      中序遍历:若二叉树为空,则空操作返回,否则从根结点开始(并不先访问根结点),中序遍历根结点的左子树,然后访问根结点,最后中序遍历右子树。

3.      后序遍历:若二叉树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后访问根结点

4.      层序遍历:若二叉树为空,则空操作返回,否则从树的第一层,也就是根节点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。

0 0
原创粉丝点击