| Title: |
Binary Tree Zigzag level Order traversal |
| Pass Rate: |
26.5% |
| Difficulty: |
Medium |
Given a binary tree, return the zigzag level order traversal of its nodes ' values. (ie, from left-to-right, then right-to-left for the next level and alternate between).
For example:
Given binary Tree {3,9,20,#,#,15,7} ,
3 / 9 / 7
Return its zigzag level order traversal as:
[ 3], [20,9], [15,7]]
Confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
The subject is to traverse the binary tree by the hierarchy, each time the queue is flipped.
See the code specifically:
1 /**2 * Definition for binary tree3 * public class TreeNode {4 * int val;5 * TreeNode left;6 * TreeNode right;7 * TreeNode (int x) {val = x;}8 * }9 */Ten Public classSolution { One PublicList<list<integer>>Zigzaglevelorder (TreeNode root) { Alist<list<integer>> res =NewArraylist<list<integer>>(); - if(Root = =NULL) { - returnRes; the } -list<integer> tmp =NewArraylist<integer>(); -queue<treenode> queue =NewLinkedlist<treenode>(); - Queue.offer (root); + intnum; - BooleanReverse =false; + while(!Queue.isempty ()) { Anum =queue.size (); at tmp.clear (); - for(inti = 0; i < num; i++) { -TreeNode node =Queue.poll (); - Tmp.add (node.val); - if(Node.left! =NULL) - Queue.offer (node.left); in if(Node.right! =NULL) - Queue.offer (node.right); to } + if(reverse) { - Collections.reverse (TMP); theReverse =false; * } $ ElsePanax NotoginsengReverse =true; -Res.add (NewArraylist<integer>(TMP)); the } + returnRes; A the } +}
Leetcode------Binary Tree Zigzag level Order traversal