ルートを除くプレフィックス ツリーのすべての子を削除する必要があります。私はコードを求めていません。ツリーのすべての子をトラバースして削除するメソッドが必要なだけです。
質問する
2557 次
3 に答える
1
次のように、ポスト オーダー トラバーサルを使用してツリーをトラバースし、ノードを削除できます。
function deleteTree(node, tree_root) {
if (node != null) {
// recursively delete left sub-tree.
deleteTree(node->left, tree_root);
// recursively delete right sub-tree.
deleteTree(node->right, tree_root);
// time to delete the node..but only if it's not root.
if( node != tree_root) {
delete node;
}
}
}
上記の関数を次のように呼び出します。
deleteTree(root,root);
于 2012-05-05T13:07:15.463 に答える
0
delete
ツリー ノードを取るメソッドを記述します。
for each child in node
call delete on child
remove child from node
free child
root の子ごとに、この delete メソッドを呼び出します。
于 2012-05-05T13:05:08.133 に答える
0
興味深いことに、いくつかのエレガントなことを行うことができます-ツリーは削除後に使用されない可能性があるため、ノードのデストラクタを書くことができます:
struct Node // Non-copyable!
{
Node *left, *right;
Node()
: left(NULL)
, right(NULL)
{
}
~Node()
{
delete left;
delete right;
}
};
そしてそれだけです!あなたはそれを使用します:delete root
。delete
NULLは C++ 標準で適切に機能する (ただ返すだけ) ため、事前に NULL をテストしない場合があることに注意してください。
于 2012-05-05T13:23:39.007 に答える