使用双端队列实现树的后序遍历

在双端队列 队首添加节点,完成树的后序遍历

public void postOrder(TreeNode root) {
        Deque<Integer> deque = new LinkedList<>();
        if (root == null) {
            return;
        }
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        while (!stack.isEmpty()) {
            TreeNode node = stack.pop();

            // 和传统先序遍历不一样,先将左结点入栈
            if (node.left != null) {
                stack.push(node.left);
            }
            // 后将右结点入栈
            if (node.right != null) {
                stack.push(node.right);
            }
            // 逆序添加结点值
            deque.addFirst(node.val);
        }

        for (Integer i : deque) {
            System.out.printf("%d ", i);
        }
    }

你可能感兴趣的:(算法)