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

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

解题思路:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

注意:

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

总结:

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

代码实现:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1329953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存