一开始我的思路就是一层用队列打印,一层用栈打印。
但是,后面发现与答案不符合,因为每一次打印都要从另外一个方向重新开始,唉。
真的蠢,每一次都要从另外一个方向,用两个栈不就解决了吗?搞那么多事。
public void prinft(Node root) {
Stack<Node> stack1 = new Stack<Node>();
Stack<Node> stack2 = new Stack<Node>();
stack1.add(root);
while(!stack1.empty() || !stack2.empty()) {
if (!stack1.empty()) {
Node node = stack1.pop();
if (node.left != null) {
stack2.add(node.left);
}
if (node.right != null) {
stack2.add(node.right);
}
System.out.println(node.val);
} else if (!stack2.empty()){
Node node = stack2.pop();
if (node.right != null) {
stack2.add(node.right);
}
if (node.left != null) {
stack2.add(node.left);
}
System.out.println(node.val);
}
}
}
class Node {
int val;
Node right;
Node left;
}