Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example: Given binary tree{3,9,20,#,#,15,7},3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7] ]用current,last两个ArrayList<TreeNode>来保存上一层和当前层node,ArrayList<Integer> temp保存last里每个node的值. 用isLeft还决定是否reverse temp, 然后加入res.public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();if (root == null)return res;boolean isLeft = true;ArrayList<TreeNode> last = new ArrayList<TreeNode>();last.add(root);while(!last.isEmpty()){ArrayList<Integer> temp = new ArrayList<Integer>();ArrayList<TreeNode> current = new ArrayList<TreeNode>(); //current temp必须每次新建for(TreeNode node: last){temp.add(node.val);if(node.left!=null)current.add(node.left);if(node.right!=null)current.add(node.right);}if(!isLeft)Collections.reverse(temp);res.add(temp);last = current;isLeft = !isLeft;}return res;}}
2014年3月22日星期六
[LeetCode] Binary Tree Level Order Traversal Solution
订阅:
博文评论 (Atom)
没有评论:
发表评论