您的位置:首页 > 其它

LeetCode-Binary Tree Zigzag Level Order Traversal

2015-03-08 01:03 429 查看
这个请参照level order traversal 不同的就是需要看每次从左还是右输出,维持一个bool 每一层取反就行,然后根据这个bool判断是用add(e) 还是add(0,e)

public class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
Queue<TreeNode> que = new LinkedList<TreeNode>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
if ( root == null)
return ans;
que.offer(root);
boolean left = true;
while( !que.isEmpty()){
int num = que.size();
List<Integer> list = new ArrayList<Integer>();
for ( int i = 0; i < num; i++ ){
if (que.peek().left != null)
que.offer(que.peek().left);
if( que.peek().right != null)
que.offer(que.peek().right);
if ( left ){
list.add(que.poll().val);
}
else
list.add(0, que.poll().val);
}
left = !left;
ans.add(list);
}
return ans;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: