二分探索木全体を削除する最も効率的な方法を知りたいです。また、メモリリークを起こさないようにするため、最初にサブツリー内のすべてのノードが削除されているかどうかを確認する必要があります。
注文後のトラバーサル、削除する以外に効率的な方法は考えられません。提案やアイデアはありますか?
二分探索木全体を削除する最も効率的な方法を知りたいです。また、メモリリークを起こさないようにするため、最初にサブツリー内のすべてのノードが削除されているかどうかを確認する必要があります。
注文後のトラバーサル、削除する以外に効率的な方法は考えられません。提案やアイデアはありますか?
ルートノードを として設定するだけnull
です。ガベージ コレクターにその仕事をさせます。
バイナリ ツリー スレッドからすべての葉を削除すると、バイナリ ツリーのすべての子を削除することについて説明します。
public static void deleteLeaves(BSTNode root) {
if (root == null)
return;
if (root.left != null && isLeaf(root.left))
root.left = null;
else
deleteLeaves(root.left);
if (root.right != null && isLeaf(root.right))
root.right = null;
else
deleteLeaves(root.right);
}
null
ルート ノードを設定し、ガベージ コレクターにジョブを実行させる最も簡単な方法は、上記のケースO(1)
ではなくO(n)
..