完全な二分木: 完全な二分木は、最後のレベルを除くすべてのレベルが完全に埋められ、すべてのノードが可能な限り左にある二分木です。
方法: このようなツリーを再帰的に順番にトラバースしますか?
1
2 3
4 5
ここで、2 と 3 は 1 のノード、4 と 5 は 2 のノードです。
完全な二分木: 完全な二分木は、最後のレベルを除くすべてのレベルが完全に埋められ、すべてのノードが可能な限り左にある二分木です。
方法: このようなツリーを再帰的に順番にトラバースしますか?
1
2 3
4 5
ここで、2 と 3 は 1 のノード、4 と 5 は 2 のノードです。
ツリートラバーサルには、基本的に 3 つのアルゴリズムがあります
Preorder
、Inorder
およびPostorder
void inorder(root_node)
{
if(root_node != null)
{
inorder(root_node->left);
println(root_node->value);
inorder(root_node->right);
}
}
出力: 4 2 5 1 3
詳細については、このリンクを参照してください。
編集:
あなたの質問に答えるには(コメントセクションで)、すべてのノードaccをトラバースしたい場合。ツリー内のレベルまで、グラフ トラバーサル アルゴリズムを使用する必要があります。あなたの場合、BFS - 幅優先検索になります。
(注: 木も一種のグラフです)
詳しくはこちらをご覧ください。
この質問は漠然としていて、何を求めているか、何が最も効果的かなどによって異なります。
以下をご覧ください: 二分木のツリー探索アルゴリズム