public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
LinkedList<TreeNode> pre = new LinkedList<TreeNode>();
if(root ==null) return result;
boolean flag =true;
pre.add(root);
while(!pre.isEmpty()){
TreeNode tmp=null;
LinkedList<TreeNode> current = new LinkedList<TreeNode>();
ArrayList<Integer> level = new ArrayList<Integer>();
while(!pre.isEmpty()){
if(flag == true){
tmp = pre.removeFirst();
if(tmp.left!=null)current.addLast(tmp.left);
if(tmp.right!=null)current.addLast(tmp.right);
}else{
tmp = pre.removeLast();
if(tmp.right!=null)current.addFirst(tmp.right);
if(tmp.left!=null)current.addFirst(tmp.left);
}
level.add(tmp.val);
}
flag = flag^true;
result.add(level);
pre = current;
}
return result;
}
没有评论:
发表评论