逆向逐层输出树中的元素
[!Tip]
本节源代码见Github链接🔗
问题描述
逆向逐层输出树中的元素
核心思路
逆向逐层输出树中的元素,使用层次遍历,并将遍历的元素移入栈中,遍历完后输出栈中元素
实现代码
【👉🏻>>点击展开查看代码】
/**
* 逆向逐层输出树中的元素
*
* @className: LevelOrderTraversalInReverse
* @author: Max Solider
* @date: 2023-06-11 18:35
*/public class LevelOrderTraversalInReverse {
public static void levelOrderTraversalInReverse(BinaryTreeNode root) {
if (root == null) {
return;
}
ArrayQueue queue = new ArrayQueue(20);
LLStack stack = new LLStack();
queue.enQueue(root);
while (!queue.isEmpty()) {
BinaryTreeNode tmp = (BinaryTreeNode)queue.deQueue();
if (tmp.getLeft() != null) {
queue.enQueue(tmp.getLeft());
}
if (tmp.getRight() != null) {
queue.enQueue(tmp.getRight());
}
stack.push(String.valueOf(tmp.getData()));
}
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
public static void main(String[] args) {
BinaryTreeNode node4 = new BinaryTreeNode(4, null, null);
BinaryTreeNode node5 = new BinaryTreeNode(5, null, null);
BinaryTreeNode node6 = new BinaryTreeNode(6, null, null);
BinaryTreeNode node7 = new BinaryTreeNode(7, null, null);
BinaryTreeNode node2 = new BinaryTreeNode(2, node4, node5);
BinaryTreeNode node3 = new BinaryTreeNode(3, node6, node7);
BinaryTreeNode node1 = new BinaryTreeNode(1, node2, node3);
levelOrderTraversalInReverse(node1);
}
}
时间复杂度
时间复杂度为O(n)。
空间复杂度
空间复杂度为O(n)。