为什么在前序遍历(二叉搜索树)上使用递归?

Why use recursion on a pre order traversal (binary search tree)?

我下面有这3种不同的遍历方法,遍历我的二叉搜索树。我知道post序和中序遍历都是从底到根,但是前序是从根到底。既然递归是自下而上的,为什么我们要在前序遍历上使用递归呢?我能找到的所有预订示例都使用递归。

private void preOrder(BinaryNode<AnyType> t )
    {
        if(isEmpty()){
            System.out.println("Empty");
        }
        if(t != null) {
            System.out.println(t.element);
            preOrder(t.left);
            preOrder(t.right);
        }
    }

    private void postOrder(BinaryNode<AnyType> t){

        if(isEmpty()){
            System.out.println("Empty");
        }
        if (t != null) {
            postOrder(t.left);
            postOrder(t.right);
            System.out.println(t.element);
        }
    }

    private void inOrder(BinaryNode<AnyType> t)
    {
        if(isEmpty()){
            System.out.println("Empty");
        }

        if (t != null) {
            inOrder(t.left);
            System.out.println(t.element);
            inOrder(t.right);
        }
    }

嗯,重点是 当我们打印树的一个节点时

后序:System.out.println被放置在所有递归调用之后,因此算法遍历所有节点直到结束并且之后开始打印它们。

对于预购情况,打印当前节点,然后处理子树。


没有像 "recursion goes bottom up or top down" 这样的规则。但是如果你有一些代码 before 递归调用,它将自上而下执行。如果在递归调用后有一些代码,它将自下而上执行。