代码如下
import java. util. ArrayList;
import java. util. Stack;
public class Solution {
public ArrayList< ArrayList< Integer> > Print ( TreeNode pRoot) {
Stack< TreeNode> s1 = new Stack < > ( ) ;
Stack< TreeNode> s2 = new Stack < > ( ) ;
ArrayList< ArrayList< Integer> > ans = new ArrayList < > ( ) ;
if ( pRoot == null)
return ans;
s1. push ( pRoot) ;
while ( ! s1. empty ( ) || ! s2. empty ( ) ) {
ArrayList< Integer> temp = new ArrayList < > ( ) ;
if ( s2. empty ( ) )
while ( ! s1. empty ( ) ) {
TreeNode top = s1. pop ( ) ;
temp. add ( top. val) ;
if ( top. left != null)
s2. push ( top. left) ;
if ( top. right != null)
s2. push ( top. right) ;
}
else
while ( ! s2. empty ( ) ) {
TreeNode top = s2. pop ( ) ;
temp. add ( top. val) ;
if ( top. right != null)
s1. push ( top. right) ;
if ( top. left != null)
s1. push ( top. left) ;
}
ans. add ( temp) ;
}
return ans;
}
}