2016-09-21 3 views
-1

BSTのトラバーサルの概念を理解していますが、再帰がどのように機能するのか混乱しています。私は、printステートメントと、パラメータとしてのroot.rightを使った再帰呼び出しがどのように実行されるのか混乱しています。私はinOder(root.left)がBSTの最も低い値を検索するために呼び出され続けることに気付きますが、nullに達するとifステートメントに到達できないため、正しいノードにジャンプすることはできません。 if文でコードの最終行にどのように到達できるかを知りたいだけです。再帰作業を使用するBSTのトラバーサルはどのくらい正確に行われますか?

public void inOrder(TreeNode root) { 
    if(root != null) { 
     inOrder(root.left); 
     System.out.printf("%d ",root.data); 
     inOrder(root.right); 
    } 
} 

答えて

0

再帰スタックを理解することが重要です。左側には、メモリ内に別々のメソッド呼び出しが格納されています。左端の呼び出しがあるときにのみ印刷が開始されます。左の子を最初に印刷し、次に親を印刷し、次に右の子を左下から印刷します。

関連する問題