数据结构—第五章(树、森林)

知识框架:

1.存储结构

 先明白其满足的定义

1.1 双亲表示法

定义:以一组连续空间储存树的结点,同时在每个结点中附设一个指示器指示其父结点在数组中的位置,这是运用了每个结点只有一个父结点的逻辑。

优缺点分析:

复习策略:直接看这个图对应表,自己能不能画出来,可以画出来,这个过程就明白了,不清楚,直接听课。

2.孩子表示法

 

注:复习策略与上面一样。(这个是我认为最高效方式) 

 3.孩子兄弟法

代码实现:

考题:主要考高频是树与二叉树的转化 

  • 树转换为二叉树:树的二叉链表是储存左孩子右兄弟,二叉树是左右孩子,所以只需让每一个结点的第一个右兄弟都变成它的右孩子。
  • 二叉树转换为树:所以只需让每一个结点的右孩子都恢复成它的右兄弟。

2.问题解答

问题①:对于一个有n个结点的树,其中叶结点为m,则转换为二叉树后其中无右孩子结点的个数为?

答案:树中的每个分支结点的最右侧孩子结点是无右兄弟的,故问题转化为二叉树后是无右孩子的。在树中,每一个分支结点都必定有且仅有一个孩子结点是没有右兄弟的,分支结点共n-m个,但是根结点作为它的父节点(←实际不存在)的孩子结点也是没有右兄弟的,故答案要再加一,共n-m+1

问题②:森林转换为二叉树,问森林中叶结点的个数等于二叉树中的什么?

答案:森林中的叶结点是没有孩子结点的,转换为二叉树后同样没有左孩子结点。而森林中的非叶结点都是有孩子结点的,转化后一定也还有左孩子结点。这是问题的关键,故答案为二叉树中左孩子指针为空的结点个数。

3.树和森林的遍历

定义:

  • 树的遍历:

先根遍历树:若树非空,先访问树的根结点,再依次从左至右先根遍历根的每棵子树。
后根遍历树:若树非空,先依次从左至右后根遍历每棵子树,再访问树的根结点。
没有中根遍历是因为树中每个结点的度不一样,没有左根右这样的方式了。只能分为先访问根或者后访问根这两种方式,此外树也有层次遍历,即按层序依次访问各结点。

  •  森林的遍历

先序遍历森林:先根遍历第一棵树,然后依次遍历剩下的树。
中根(后根)遍历森林:后根遍历第一棵树,然后依次遍历剩下的树。
注:部分教材将森林的中根遍历称为后根遍历,称中根遍历是相对其二叉树而言的,称后根遍历是因为根确实是最后访问的。

树、二叉树、森林遍历的对应关系:

注:同一行相同。

对于树和森林的遍历,根据此表转换为熟知的二叉树遍历处理。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值