剑指Offer上一道编程题
用两个栈s1 s2分别保存奇数层节点和偶数层节点
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
int n=1;
Stack<TreeNode> s1=new Stack<TreeNode>();
s1.push(pRoot);
Stack<TreeNode> s2=new Stack<TreeNode>();
ArrayList<ArrayList<Integer>> temp=new ArrayList<ArrayList<Integer>>();
while(!s1.empty()||!s2.empty()){
if(n%2!=0){
ArrayList<Integer> a1=new ArrayList<Integer>();
while(!s1.empty()){
TreeNode p1=s1.pop();
if(p1!=null){
a1.add(p1.val);
s2.push(p1.left);
s2.push(p1.right);
}
}
if(!a1.isEmpty()){
temp.add(a1);
n++;
}
}else{
ArrayList<Integer> b1=new ArrayList<Integer>();
while(!s2.empty()){
TreeNode p2=s2.pop();
if(p2!=null){
b1.add(p2.val);
s1.push(p2.right);
s1.push(p2.left);
}
}
if(!b1.isEmpty()){
temp.add(b1);
n++;
}
}
}
return temp;
}
今天做了三道题吧,借鉴了别人的思路。。。毕竟还是在学习阶段,66道题马上做完了,继续努力吧!!