二叉树的先序遍历及其递归思想

在这里插入图片描述
关于二叉树的先序遍历呢,我们就以上面的二叉树为例进行讲述:

先序遍历呢,就是先遍历他的头节点,再遍历他的左子树,之后再是右子树。所以显示遍历结点A,之后遍历他的左子树B,再通过B,遍历他的左子树D,再遍历D的左子树此时发现D的左子树为空,此时再返回B去遍历他的右子树E,再通过E遍历他的左子树G,在遍历G的左子树,此时G的左子树为空,返回E再遍历E的右子树,也为空,此时A的左子树就遍历完了,返回到A再遍历他的右子树C,再遍历C的左子树,发现为空,则遍历右子树F,在遍历F的左子树发现也为空,此时A的右子树也遍历完了,这时整个二叉树就遍历完了,返回A。

所以先序遍历的顺序是:A,B,D,E,G,C,F

下面使用递归来实现先序遍历:

 public static void preOrder(Node root) {
        if (root == null) {
            return;
        }
        System.out.print(root.val);
        preOrder(root.left);
        preOrder(root.right);
    }

在这里插入图片描述

这是我大概画的一个递归的内部关系,虽然看起来是吧,但是还是阔以的。
它的打印结果就是我们前面推导的那样。我们看到的代码虽然只有那几行,但是内部的关系还是很复杂的,所以希望我画的图对大家的理解有帮助!!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhj_loveFang_1105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值