二叉树

 

树的一种特殊情况,子树的度最大为2, 同时,要求是有序树

以下不是一种树:

大话数据结构008 二叉树

对于三个节点的二叉树,可以有以下几种形态:

大话数据结构008 二叉树

左斜树

大话数据结构008 二叉树

右斜树

大话数据结构008 二叉树

满二叉树:除了叶子结点,所有其他的节点都含有左子树和右子树,所有的叶子结点在同一层。

大话数据结构008 二叉树

完全二叉树:如果一个二叉树对应着满二叉树的位置一致,就称为完全二叉树

大话数据结构008 二叉树

以下均不是完全二叉树:

大话数据结构008 二叉树

 

二叉树的性质:

 

大话数据结构008 二叉树

大话数据结构008 二叉树

大话数据结构008 二叉树

大话数据结构008 二叉树

大话数据结构008 二叉树

 

二叉树的顺序存储结构

 

对于完全二叉树是非常简便的:

大话数据结构008 二叉树

大话数据结构008 二叉树

对于非完全二叉树:

大话数据结构008 二叉树

大话数据结构008 二叉树

 

二叉树的链式存储结构

 

大话数据结构008 二叉树

data为数据域,lchild是左子树指针,rchild是右子树指针。

大话数据结构008 二叉树

大话数据结构008 二叉树

 

二叉树的遍历

 

1. 先序遍历

先遍历根节点,再先序遍历左子树,最后先序遍历右子树。

大话数据结构008 二叉树

次序是:A-B-D-G-H-C-E-I-F

大话数据结构008 二叉树

 

2. 中序遍历

先遍历左子树,然后是根节点,最后是右子树

大话数据结构008 二叉树

次序是:G-D-H-B-A-E-I-C-F

大话数据结构008 二叉树

3. 后序遍历

先左子树,再右子树,最后根节点。

大话数据结构008 二叉树

次序是:G-H-D-B-I-E-F-C-A

大话数据结构008 二叉树

4. 层序遍历

从上到下,从左到右,逐层遍历。

大话数据结构008 二叉树

次序是:A-B-C-D-E-F-G-H-I

 

二叉树的建立

 

使用扩展二叉树表示原有的二叉树:

大话数据结构008 二叉树

大话数据结构008 二叉树

 

树转换成二叉树

 

1. 将所有的兄弟节点之间连线

2. 对每个节点,只保留与第一个孩子节点的连线,删除与其他孩子节点的连线。

3. 顺时针转动,使得结构分明。

大话数据结构008 二叉树
 

森林转二叉树

 

1. 将各个树转成二叉树。

2. 将第二个树以后的树依次作为前一个树的右子树连接。

大话数据结构008 二叉树

大话数据结构008 二叉树

 

二叉树转树

 

1. 将父节点与子节点的右节点相连。

2. 去除节点与右节点的连线。

3.调整结构。

大话数据结构008 二叉树

 

二叉树转森林

 

1. 将节点与右孩子的连线擦除

2. 将分离后的二叉树转换成树。

大话数据结构008 二叉树

 

树的遍历

 

先根遍历:先访问树的根节点,再依次先根遍历每个子树。

后根遍历:依次后根遍历每个子树,再遍历根节点。

大话数据结构008 二叉树

先根遍历:A-B-E-F-C-D-G

后根遍历:E-F-B-C-G-D-A

 

森林的遍历

 

先根遍历:对于每棵树,先根遍历。(等价于二叉树的先序遍历)

后根遍历:对于每棵树,后根遍历。(等价于二叉树的中序遍历)

大话数据结构008 二叉树

先根遍历:A-B-C-D-E-F-G-H-J-I

后根遍历:B-C-D-A-F-E-J-H-I-G

 

附:二叉树既可以转树,又可以转森林,什么时候可以转森林呢?二叉树的根节点有右孩子,那就是森林,没有那就是树。

相关文章:

  • 2021-11-22
  • 2021-07-30
  • 2021-08-18
  • 2021-11-15
  • 2021-05-16
  • 2021-08-21
  • 2021-06-13
  • 2021-11-01
猜你喜欢
  • 2022-01-26
  • 2021-12-24
  • 2022-01-26
  • 2021-09-23
  • 2021-04-24
  • 2021-06-19
  • 2021-06-03
相关资源
相似解决方案