精选文章 按层次打印二叉树

按层次打印二叉树

作者:degilj6052 时间: 2013-05-01 04:41:00
degilj6052 2013-05-01 04:41:00

题目:
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
7
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11。

二叉树节点的数据结构:

1 struct BinaryTreeNode
2 {
3     int nData;
4 
5     BinaryTreeNode *lChild;
6     BinaryTreeNode *rChild;
7 };

思路:按层次遍历一般用队列很容易实现,直接上代码:

 1 void LevelTraversalBinaryTree(BinaryTreeNode *root)
 2 {
 3     assert (root != NULL);
 4 
 5     BinaryTreeNode *Queue[MAX];
 6     int nHead = -1;
 7     int nTail = -1;
 8 
 9     // 根节点首先入栈
10     Queue[++nTail] = root;
11     while (nHead < nTail)
12     {
13         // 访问根节点
14         ++nHead;
15         cout << Queue[nHead]->nData << " ";
16 
17         // 要求层次访问顺序从左到右,因此做孩子先入队列
18         if (Queue[nHead]->lChild != NULL)
19         {
20             // 将根节点的左孩子加入到队列
21             Queue[++nTail] = Queue[nHead]->lChild;
22         }
23 
24         if (Queue[nHead]->rChild != NULL)
25         {
26             // 将根节点的右孩子加入队列
27             Queue[++nTail] = Queue[nHead]->rChild;
28         }
29     }
30 }

给出一个测试结果:

按层次打印二叉树1

posted on 2013-05-01 16:41 ldjhust 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ldjhust/archive/2013/05/01/3053339.html

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:字符串中第一个只出现一次的字符

下一篇:将二分查找书转变成其镜像

您可能感兴趣

  • 为什么苏联打下了如此强的数学基础,俄罗斯却至今无法成为AI强国?

    作者:俄罗斯小笨笨 链接:https://www.zhihu.com/question/395842406/answer/1243718056 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 数学实力有多强我不清楚,我也对数学的了解也不专业。但是让俄罗斯无法成为AI强国的最大问题之一,肯定包含了人才外流这一原因。 或者往大了说,是俄罗斯各个行业一直面临的一个...

  • 2020,我不想奋斗了

    导读:奋斗狗和咸鱼,你会怎么选? 作者:黎明 唐亚华 周继凤 孟亚娜 金玙璠 赵磊 苏琦 编辑:黎明 来源:燃财经(ID:rancaijing) 对于很多人而言,2020年是极其特殊甚至荒诞的一年。 年初爆发的新冠肺炎疫情,影响了经济形势,改变了很多人的生活。2020年已经过半,最近,有这样一种声音:有人说不想奋斗了,有人说鸡汤喝够了,有人说要及时行乐,还有人一边喊着不想奋斗,一边用实际行动...

  • 目标检测经典论文——R-CNN论文翻译:Rich feature hierarchies for accurate object detection and semantic segmentation

    Rich feature hierarchies for accurate object detection and semantic segmentation——Tech report (v5) 用于精确物体定位和语义分割的丰富特征层次结构——技术报告(第5版) Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik UC Berk...

  • 字节跳动面经整理

    1. 操作系统: 进程和线程介绍; 进程或线程死锁介绍; 多进程,多线程的并发执行带来的问题-死锁 死锁是指多个进程(线程)在执行过程中,由于竞争资源或者彼此通信而造成的一种阻塞的现象(互相挂起等待),若无外力他们都将无法推进下去。 银行家算法 了解活锁吗?(没听过) 操作系统中的堆和栈; 栈(操作系统):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中栈,...

  • 应对功能性失衡-农业大健康·万建民:生物营养强化精准扶贫

    应对功能性失衡-农业大健康·万建民:生物营养强化精准扶贫 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万赢信采编:“新中国成立以来,中国农业摆脱了底子薄、积累少、靠天吃饭的局面,站在了加快实现农业现代化的历史新起点。”全国工商联执委、中国经济和信息化研究中心主任、国家政策研究室中国国情研究中心主任万祥军研读表明:农业科学技术的不断发展与创新,为...

  • 19秋招训练营day8

    (1).HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一 维模式识别中,常常需要计算连续子向量的大和,当向量全为正数的时候,问题很好解决。但是,如果向量 中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向 量的大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的大连续子...

  • Java中守护线程和本地线程区别,这特么太重要了!

    1.Java中守护线程和本地线程区别 java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 唯一的区别...

  • 2020年iOS面试反思总结

    Object-C系列面试题总结 基础题: 1.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么不要在category中重写一个类原有的方法? 答: Objective-c的类不可以有多继承,OC里面都是单继承,多继承可以用protocol委托代理来模拟实现 可以实现多个接口,可以通过实现多个接口完成OC的多重继承...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。