栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【数据结构】C语言算法练习题——利用“层序遍历”判断题目中所给二叉树是否为完全二叉树

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【数据结构】C语言算法练习题——利用“层序遍历”判断题目中所给二叉树是否为完全二叉树

解题思路:

1. 对于完全二叉树的判断:不能根据 “ 右孩子存在则左孩子一定存在 ” 的思路去判断所给二叉树是否为完全二叉树

2. 利用 “ 层序遍历 ” 的思路去进行是否为完全二叉树的判断。

遇到NULL后面都是NULL,而遇到 NULL 后面还有非空,则该二叉树不是完全二叉树。遇到非空,后面一定都是非空。符合这样的规律才叫完全二叉树。

即利用了 “ 层序遍历 ” 的遍历特点

3. 以上图中的第二个二叉树为例,模拟用队列实现层序遍历:

首先判断结点是否为空,不为空,

则根结点1先进入到队列中,再将根结点1拿出,

然后使根结点的左右孩子(2,4结点)分别进入队列,

然后将进入的左孩子结点 2 拿出,

拿出后将结点2 的孩子结点(只有一个结点3)进入队列之中,

然后将之前留在队列中的结点4拿出来,

再将结点 4 的孩子结点 5,6 放入队列之中。

再把之前留在队列中的结点 3 拿出来,

再将其结点 7 放进队列之中,

然后将队列中的剩余结点一个接一个拿出再插入其子节点,

注意:

如果其子节点为空,则无需进行插入操作

总结:

即将哪个结点从队列中拿出来,就要把它的子节点都拿进队列中

代码实现:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号