C 言語のバイナリ ツリーを順番に走査する方法: 最初に左側のサブツリーを走査し、再帰を利用して左端のノードにアクセスし続けます。次にルート ノードにアクセスし、最後に右側のサブツリーを走査します。サブツリーにアクセスし、再帰を利用してアクセスを続けます。右端のノードに移動するだけです。
C 言語でバイナリ ツリーを順番に走査する方法:
in-トラバーサル順序は次のとおりです: 左のサブツリー ---> ルート ノード ---> 右のサブツリー。したがって、ノードにアクセスする順序を変更する必要があります。
ちょうど 2 つの子ノードを持つ (子ノードがない) ノードの場合、再帰が往復プロセスになるまで待機します。左側のノードに 1 回アクセスし、ルートにアクセスして、右側のノードにアクセスするだけで済みます。それでおしまい。
そして、両側にノードがある場合。各ノードは、順序どおりの走査のルールを満たす必要があります。最初にルートから左側のノードにアクセスします。左ノードに到達すると、左ノードは再びサブツリーになります。これは、順序トラバーサルの要件も満たさなければなりません。したがって、最初に左ノードの左ノード (存在する場合) にアクセスする必要があります。そう考えればルールは理解できます。しかし、それは複雑すぎます。次に、再帰を使用します。そのサブ問題はルート ノードの問題と同じですが、範囲が縮小されるためです。そこで私たちはそれを解決するために再帰的思考を使用します。
その後、再帰ロジックは次のようになります。特別な状況 (特別な場合は直接アクセス) を考慮して、再帰を行わず、それ以外の場合は左のサブツリーに再帰的にアクセスします (左のサブツリーに同じ関数を実行させ、再帰を停止します)特別な場合) 出力します。特別でない場合は、左端のノードまで探し続けます。)——>ノードを出力します——> 右のサブツリーに再帰的にアクセスします。
public void zhongxu(node t)// 中序遍历 中序遍历:左子树---> 根结点 ---> 右子树 { if (t != null) { zhongxu(t.left); System.out.print(t.value + " ");// 访问完左节点访问当前节点 zhongxu(t.right); } }
関連学習 推奨: C ビデオ チュートリアル
以上がC言語でバイナリツリーの順序トラバーサルを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。