数据结构与算法——Java实现 39.二叉树②迭代实现

目录

前中后序遍历非递归实现

1.前序

2.中序

3.后序

4.示例代码


当时年少掷春光,花马踏蹄酒渐香

                                                —— 24.10.20

前中后序遍历非递归实现

三种遍历虽然打印的顺序不一样,但是其在树中每个节点的访问路径相同

1.前序

我们使用一个栈来辅助实现。首先将根节点入栈。在每次循环中,取出栈顶节点并输出其值。然后先将右子节点入栈(如果存在),再将左子节点入栈(如果存在)。这样就保证了先访问根节点,然后是左子树,最后是右子树。

因为栈是先进后出的数据结构,所以先入栈的左子节点会在右子节点之后被处理,从而实现了前序遍历(根左右)的顺序。

    // 前序遍历(根左右)
    public static void preOrderTraversal(TreeNode root) {
        if (root == null) {
            return;
        }

        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);

        while (!stack.isEmpty()) {
            TreeNode node = stack.pop();

            System.out.print(node.val + " ");

            if (node.right!= null) {
                stack.push(node.right);
            }

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值