各位老友,欢迎来到本期博文!本期将继续进行二叉树的学习!! 本期涉及内容包括 : 二叉树层序遍历,布尔判断二叉树(是不是二叉树) 那么重点来了,我们该如何实现 层序遍历
各位老友,欢迎来到本期博文!本期将继续进行二叉树的学习!!
本期涉及内容包括 :> 二叉树层序遍历,布尔判断二叉树(是不是二叉树)
那么重点来了,我们该如何实现 层序遍历!以及什么是层序遍历!?
-----> 层序遍历:自根至叶子结点(自上而下)每一层每一层遍历打印,而每一层的遍历又是从子左子树到右子树
那么,该如何实现呢!
------> 其实,接下来写的是用队列来实现的!如此,队列的作用就派上了用场,队列遵循先进先出!
其实,用队列去实现层序遍历是最常用的,也是最为高效的!!
而在代码逻辑上是最为清晰的,有章可循的,至少在一定程度上,降低了用其他方法带来的冗长与赘余!!
注意,这里不再展示队列书写!!请老友们自行观看,前几期的博文!
现在上手代码 :>
//二叉树层序遍历
#include "Queue.h"
void TreeLevel(BTNode* root)
{
Queue q;
QueueInitial(&q);
if(root)
{
QueuePush(&q, root);
}
while(!QueueEmpty(&q))
{
BTNode* front = QueueFront(&q);
QueuePop(&q);
printf("%d ", front ->data);
if(front ->leftChild)
{
QueuePush(&q, front ->leftChild);
}
if(front ->rightBrother)
{
QueuePush(&q, front ->rightBrother);
}
}
QueueDestroy(&q);
}
为了方便各位老友有较好的观感体验!!
现在,继续推进!该如何实现布尔判断二叉树?
答案是,队列!至于缘由,还是在比较了各种方法之间,队列的布尔判断是最高效,也是代码逻辑最为简洁明了的!!哈