注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
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).- import java.util.Stack;
- public class Solution {
- public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
- ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
- ArrayList<Integer> list = new ArrayList<Integer>();
-
- if(root == null) return result;
-
- LinkedList<TreeNode> parents = new LinkedList<TreeNode>();
- Stack<TreeNode> children = new Stack<TreeNode>();
-
- parents.add(root);
- while(!parents.isEmpty()){
- TreeNode parent = parents.remove();
- if(parent.left!=null) children.push(parent.left);
- if(parent.right!=null) children.push(parent.right);
- list.add(parent.val);
- if(parents.isEmpty()){
- while(!children.empty()){
- parents.add(children.pop());
- }
- children = new Stack<TreeNode>();
- result.add(list);
- list = new ArrayList<Integer>();
- }
- }
- return result;
- }
- }
复制代码 有空的同学,帮忙看看这个哪儿写错了。。。
我自己在纸上过一遍应该是对的啊,搞不懂为什么test的5,4位置没变。
Wrong answer
Input: {1,2,3,4,5}
Output: [[1],[3,2],[5,4]]
Expected: [[1],[3,2],[4,5]]
|