public void iterativePreorder(Node root) {
Stack nodes = new Stack();
nodes.push(root);
Node currentNode;
while (!nodes.isEmpty()) {
currentNode = nodes.pop();
Node right = currentNode.right();
if (right != null) {
nodes.push(right);
}
Node left = currentNode.left();
if (left != null) {
nodes.push(left);
}
System.out.println("Node data: "+currentNode.data);
}
}
出典:ウィキツリートラバーサルバイナリツリーO(n)のInOrder Treeトラバーサルの時間複雑度?
はO(n)があることを行って時間複雑ですか?再帰を使用して完了した場合、時間の複雑さは同じになるでしょうか?
新しい質問: 私はTreeA限りのノードを持つことになり、別のツリーTreeBを作成するTreeAから特定のノードを見つけるために、上記のコードを使用した場合、その後、TreeB作成の複雑さは(OだろうN^2)それはn個のノードであり、各ノードはO(n)である上記のコードを使用するだろうから? (検索および他のほとんどのツリーの操作とは対照的に)バイナリツリーのトラバーサルが全てツリーノードが処理されることを必要とするので
はい、ツリーのN個の要素に1回当たっているためです。 –
1.新しい質問を別途投稿してください。 2.私は正確にTreeBが作成されるはずであることを理解していません... – thkala