一、二叉树基本概念

度:节点拥有的子树个数。

树的度:内部结点度的最大值。

叶子:度为0的节点(没有分出的子节点)

节点层次:根在第一层,树的深度(高度)是最大的层次。

二叉树的五种

空二叉树、只有根节点、根节点只有左子树、只有右子树、左右子树。

数据结构(Course)6:二叉树与树概念

特殊二叉树

满二叉树:所有节点都有左子树和右子树。

完全二叉树:最下一层节点集中在最左边。

性质

数据结构(Course)6:二叉树与树概念

1、第i层上最多有2^(i-1)个节点  (1、2、4)

2、深度为k的二叉树最多有2^k-1个节点  (1、3、7)

3、终端叶子为n0,度为2的节点为n2个,则n0=n2+1 (推导:n0+n1+n2-1=n1+n2*2)

 4、具有n个节点个完全二叉树的深度为【log2  n】+1(【】表示取整)

完全二叉树的性质 :
设一棵有n个结点的完全二叉树的所有结点按层次从左至右编号为从0到n-1,设某个结点的序号为i,0<=i< n,那么有如下性质: 
(1)i=0,说明该结点是根结点。 
(2)i>0,说明该结点的父结点为(i-1)/2。 
(3)若2i+1< n,则该结点的左孩子的序号为2i+1,否则无左孩子。 
(4)若2i+2< n,则该结点的右孩子的序号为2i+2,否则无右孩子。

存储结构

顺序存储结构只适用于完全二叉树(否则左侧有大量空单元)

二叉链表和三叉链表

数据结构(Course)6:二叉树与树概念

二、树基本概念

1、有向有序树:子树的相对次序最重要。

数据结构(Course)6:二叉树与树概念

2、链式存储结构:

动态“左子/右兄”二叉链表示法:左孩子是节点最左侧子节点,节点原来的右侧兄弟节点

将一棵复杂的树变成一棵二叉树

数据结构(Course)6:二叉树与树概念

3、顺序存储结构

数据结构(Course)6:二叉树与树概念

 

4、父指针表示法

路径压缩(并不关心H E D之间关系,只要求H的根节点D,直接指向根节点)

数据结构(Course)6:二叉树与树概念

路径压缩使Find开销接近于常数。

三、转化关系

树化为二叉树:

1、加线:兄弟之间加一条线,这些线之后不去

2、去线:只留下长子

3、调整:顺时针旋转下,第一个孩子转换为右孩子

森林转化为二叉树:

1、每棵树转化为二叉树

2、第一棵二叉树不动,从第二棵开始,后一棵的根作为前一棵根节点的右孩子。

数据结构(Course)6:二叉树与树概念

二叉树转为森林

1、加线:若左孩子存在,右孩子节点,右孩子的右孩子。。。。。都和双亲连上

2、去线:删除原来右孩子的连线

数据结构(Course)6:二叉树与树概念数据结构(Course)6:二叉树与树概念数据结构(Course)6:二叉树与树概念

 

 

 

 

 

 

 

 

 

相关文章:

  • 2021-10-13
  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
  • 2021-05-12
  • 2021-05-08
猜你喜欢
  • 2021-06-08
  • 2021-10-11
  • 2021-12-01
  • 2021-08-05
  • 2021-05-30
  • 2021-08-25
  • 2021-11-17
相关资源
相似解决方案