ホームページ  >  記事  >  バックエンド開発  >  C言語でバイナリツリーの順序トラバーサルを実行するにはどうすればよいですか?

C言語でバイナリツリーの順序トラバーサルを実行するにはどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-15 11:26:033695ブラウズ

C 言語のバイナリ ツリーを順番に走査する方法: 最初に左側のサブツリーを走査し、再帰を利用して左端のノードにアクセスし続けます。次にルート ノードにアクセスし、最後に右側のサブツリーを走査します。サブツリーにアクセスし、再帰を利用してアクセスを続けます。右端のノードに移動するだけです。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。