从上往下打印二叉树
层次遍历(广度优先遍历)
(一)从上往下打印出二叉树的每一个节点,每一层的节点按照从左到右的顺序打印。
思路
不分行从上到下打印二叉树,即二叉树的层序遍历,节点满足先进先出的原则,采用队列。每从队列取出头部节点并打印,若有子节点,把子节点放入队列尾部,直到所有节点打印完毕。
Java代码
1 | /** |
分行从上往下打印二叉树
(二)从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。
思路
同样使用队列,但是比第一题增加两个变量来给你:当前层节点数目pCount,下一层节点数目nextCount。根据当前成节点数目来打印当前层节点,同时计算下一层节点数目,之后令pCount等于nextCount,重复循环,直到打印完毕。
Java代码
1 | ** |
之字形打印二叉树
(三)请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
思路和代码
采用两个栈,对于不同层的节点,一个栈用于正向存储,一个栈用于逆向存储,打印出来就正好是相反方向。
Java代码
1 | /** |