【每日一题 | 数据结构 | 树的转换与遍历】

重要知识点讲解

  1. 考研中只会涉及到两种树的存储,一是二叉树的存储方式,二是一般树的存储方式。
  2. 二叉树的存储方式,主要有两种:
    1. 链表存储:定义一个结构体,包含数据和左右节点的指针,指针将多个节点链接为一个二叉树。
struct BTree{
    int data;
    struct BTree* lchild;
    struct BTree* rchild;
};
2. **数组存储**:用一个线性表,将二叉树的节点按照层次遍历的顺序依次存储—从上到下,从左到右。
  1. 一般树的存储方式**。**主要有三种

    1. 双亲表示法:每个节点都有两个部分组成,分别是自身的数据和其父结点

      在这里插入图片描述

    2. 孩子表示法:把每个结点的孩子结点都用链表串起来

      在这里插入图片描述

    3. 孩子兄弟表示法:这个存储方式是用来实现树与二叉树转换的。记住一个口诀:“左孩子,右兄弟”,如图所示节点的左指针指向第一个孩子,右指针指向其的兄弟(如果有多个兄弟依次串联)

      在这里插入图片描述

  2. 对于森林的处理,一般会将森林转换为二叉树存储,与孩子兄弟表示法类似:将每一棵树的根节点看作兄弟结点,然后通过**”左孩子,右兄弟“**的口诀进行转换

    在这里插入图片描述

题目

【2014统考真题】将森林F转换为对应的二叉树T,F中叶节点的个数等于()

A. T中叶结点的个数

B. T中度为1的结点个数

C. T中左孩子指针为空的结点个数

D. T中右孩子指针为空的结点个数

讲解笔记

所有概念性题目,没有给出具体树的,都用枚举树发(化抽象为具体)的方法来做。

在这里插入图片描述

在这里插入图片描述

逻辑分析一下:森林中叶子结点是没有孩子的,用左孩子右兄弟方法来转化,转化为二叉树里面就没有左孩子了,所以二叉树中没有左孩子的结点为森林中的叶子结点。

讲解视频链接:【每日一题 | 数据结构 】 树的存储与森林转换算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会喷火的小火龙

你的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值