如下所示的二叉树:
输出:13 5 9 10 7 4 8 12 6 3 11 2 1
public static<T> void levelOrderTraversalInReverse(BinaryTreeNode<T> root){ // 逆向逐层输出元素
if(root == null)
return;
DynArrayQueue<BinaryTreeNode<T>> queue = new DynArrayQueue<>();
DynArrayStack<BinaryTreeNode<T>> stack = new DynArrayStack<>();
queue.enQueue(root);
while(!queue.isEmpty()){
root = queue.deQueue();
if(root.getRight() != null)
queue.enQueue(root.getRight());
if(root.getLeft() != null)
queue.enQueue(root.getLeft());
stack.push(root);
}
while(!stack.isEmpty())
System.out.print(stack.pop().getData() + " ");
}
完整代码可以访问我的GitHub:https://github.com/StriverLi/Data-Structures-and-Algorithms-in-Java/blob/master/src/tree/BinaryTreeNode.java