递归前序遍历算法如何回到父级?

can*_*e88 3 java algorithm binary-tree tree-traversal binary-search-tree

public static void preorder(Node root) {
    if(root == null) return;

    root.printValue();
    preorder(root.getLeft());
    preorder(root.getRight());
}
Run Code Online (Sandbox Code Playgroud)

我试图多次通过这个功能,但我仍然无法弄清楚如何遍历所有左边的孩子后,算法会回到最近的祖先(父母).有人可以向我解释一下.

Dao*_*Wen 8

return你的void方法结束时有一个隐含的:

public static void preorder(Node root) {
    if(root == null) return;

    root.printValue();
    preorder(root.getLeft());
    preorder(root.getRight());
    return;
}
Run Code Online (Sandbox Code Playgroud)

您总是返回调用您的方法.因此,如果父进程的方法调用再次调用子进程,那么当子进程的方法调用返回时,它将返回父进程.对?

希望有道理.就像Kon说的那样,你应该在纸上运行算法.或者,更好的是,如果您知道如何使用调试器,则可以在调试器中单步执行代码并查看其工作原理.