题目
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,即第一行按照从左到右的顺序打印,第二层按照从右到左顺序打印,第三行再按照从左到右的顺序打印,其他以此类推。
实现
public class Solution61 {
public static void printtree(BinaryTreeNode root) {
if (root ==
null) {
return;
}
Stack<BinaryTreeNode> current =
new Stack<BinaryTreeNode>();
Stack<BinaryTreeNode> reverse =
new Stack<BinaryTreeNode>();
int flag =
0;
BinaryTreeNode node;
current.add(root);
while (!current.isEmpty()) {
node = current.pop();
System.
out.printf(
"%-3d", node.
value);
if (flag ==
0) {
if (node.left !=
null) {
reverse.push(node.left);
}
if (node.right !=
null) {
reverse.push(node.right);
}
}
else {
if (node.right !=
null) {
reverse.push(node.right);
}
if (node.left !=
null) {
reverse.push(node.left);
}
}
if (current.isEmpty()) {
flag =
1 - flag;
Stack<BinaryTreeNode> tmp = current;
current = reverse;
reverse = tmp;
System.
out.println();
}
}
}
}