定义变量的范围值得注意
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
if(pRoot==null)
{
ArrayList<ArrayList<Integer> > p=new ArrayList<ArrayList<Integer> >();
return p;
}
ArrayList<ArrayList<Integer> > res=new ArrayList<ArrayList<Integer> >();
ArrayList<Integer> list=new ArrayList<Integer>();
Stack<TreeNode> stack1=new Stack<TreeNode>();
Stack<TreeNode> stack2=new Stack<TreeNode>();
stack1.push(pRoot);
int d=2;
while(stack1.isEmpty()!=true)
{
TreeNode a=stack1.pop();
list.add(a.val);
//保存左右
if(a.left!=null)
{
stack2.push(a.left);
}
if(a.right!=null)
{
stack2.push(a.right);
}
//第一个结果
if (stack1.isEmpty()==true)
{
ArrayList<Integer> list2=new ArrayList<Integer>();
int i=0;
while(list.isEmpty()!=true)
{
int c=list.remove(i);
list2.add(c);
}
if(d%2!=0)
{
System.out.println(d+"转换");
Collections.reverse(list2);
}
d++;
System.out.println(d);
res.add(list2);
System.out.println(list2);
while(stack2.isEmpty()!=true)
{
stack1.push(stack2.pop());
}
}
}
return res;
}
}