【剑指offer】面试题32 - III:从上到下打印二叉树 III(Java)
請實現(xiàn)一個函數(shù)按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。
?
例如:
給定二叉樹:?[3,9,20,null,null,15,7],
? ? 3
? ?/ \
? 9 ?20
? ? / ?\
? ?15 ? 7
返回其層次遍歷結(jié)果:
[
? [3],
? [20,9],
? [15,7]
]
?
提示:
節(jié)點總數(shù) <= 1000
思路:
偶數(shù)行的list逆序即可
代碼:
/**
?*?Definition?for?a?binary?tree?node.
?*?public?class?TreeNode?{
?*?????int?val;
?*?????TreeNode?left;
?*?????TreeNode?right;
?*?????TreeNode(int?x)?{?val?=?x;?}
?*?}
?*/
class?Solution?{
????public?List<List<Integer>>?levelOrder(TreeNode?root)?{
????????List<List<Integer>>?result?=?new?LinkedList<List<Integer>>();
????????if(root==null)
????????{
????????????return?result;
????????}
????????List<Integer>?list?=?new?LinkedList<Integer>();
????????Deque<TreeNode>?deque?=?new?LinkedList<TreeNode>();
????????deque.offer(root);
????????TreeNode?flag?=?root;
????????int?k=1;
????????while(!deque.isEmpty())
????????{
????????????TreeNode?p?=deque.poll();
????????????list.add(p.val);
????????????if(p.left!=null)
????????????{
????????????????deque.offer(p.left);
????????????}?
????????????if(p.right!=null)
????????????{
????????????????deque.offer(p.right);
????????????}
????????????if(flag==p)
????????????{
????????????????flag?=?deque.peekLast();
????????????????if(k%2==0)
????????????????{
????????????????????Collections.reverse(list);
????????????????}
????????????????result.add(list);
????????????????list?=?new?LinkedList<Integer>();
????????????????k++;
????????????}
????????}
????????return?result;
????}
}
總結(jié)
以上是生活随笔為你收集整理的【剑指offer】面试题32 - III:从上到下打印二叉树 III(Java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL--浅析索引
- 下一篇: 7-4 最短工期 (25 分)