首页 > 其他 > 详细

[Leetcode]-- Binary Tree Zigzag Level Order Traversal

时间:2014-02-01 13:56:40      阅读:405      评论:0      收藏:0      [点我收藏+]

[解题思路]

二叉树的层序遍历通过使用queue来实现,

上网搜索了下,发现该题可以使用栈来解决,通过分析执行结果确实是后进先出

这里通过定义leftToRight来表示是从左到右还是从右到左

从左到右:先加left后加right

从右到左:先加right后加left

 

bubuko.com,布布扣
/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        if(root == null){
            return result;            
        }
        Stack<TreeNode> curLvl = new Stack<TreeNode>();
        Stack<TreeNode> nextLvl = new Stack<TreeNode>();
        boolean leftToRight = true;
        curLvl.push(root);
        ArrayList<Integer> output = new ArrayList<Integer>();
        while(!curLvl.empty()){
            TreeNode curNode = curLvl.pop();
            output.add(curNode.val);
            if(leftToRight){
                if(curNode.left != null){
                    nextLvl.add(curNode.left);
                }
                if(curNode.right != null){
                    nextLvl.add(curNode.right);
                }
            } else{
                if(curNode.right != null){
                    nextLvl.add(curNode.right);
                }
                if(curNode.left != null){
                    nextLvl.add(curNode.left);
                }
            }
            if(curLvl.empty()){
                result.add(output);
                output = new ArrayList<Integer>();
                leftToRight = !leftToRight;
                curLvl.addAll(nextLvl);
                nextLvl.clear();
            }
        }
        return result;
    }
}
bubuko.com,布布扣

[Leetcode]-- Binary Tree Zigzag Level Order Traversal

原文:http://www.cnblogs.com/RazerLu/p/3536936.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!