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

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

先序遍历呢,就是先遍历他的头节点,再遍历他的左子树,之后再是右子树。所以显示遍历结点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);
    }

在这里插入图片描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章