我需要刪除除根外的所有我的前綴樹的子節點。我不問任何代碼。我只需要一種方法來遍歷和刪除樹的所有子節點。如何刪除樹的子節點
2
A
回答
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);
0
寫方法delete
,這需要一個樹節點:
for each child in node
call delete on child
remove child from node
free child
對於根調用這個刪除方法的每個孩子。
0
有趣的是,由你可能會做一些優雅 - 樹可能不會在刪除後使用,因此您可以編寫節點的析構函數:
struct Node // Non-copyable!
{
Node *left, *right;
Node()
: left(NULL)
, right(NULL)
{
}
~Node()
{
delete left;
delete right;
}
};
就是這樣!您使用它:delete root
。請注意,在delete
之前,您可能不會測試NULL,因爲它通過C++標準運行良好(只是返回)。
相關問題
- 1. 樹刪除節點
- 2. 如何刪除樹中的節點?
- 3. 如何刪除子節點
- 4. React樹 - 如何刪除當前節點?
- 5. 刪除有兩個子樹/節點的節點
- 6. 如何刪除所選節點的子節點Telerik的劍道樹狀
- 7. 如何刪除樹狀佈局中的單個子節點
- 8. 如何刪除樹中的無效子節點
- 9. 從d3js樹佈局中刪除節點及其子節點
- 10. C++將已刪除節點的子節點移到樹中的父節點
- 11. 刪除子節點
- 12. 如何刪除節點的孩子?
- 13. 刪除div節點的子節點
- 14. XML:刪除節點的子節點
- 15. 刪除無子節點的父節點
- 16. 如何刪除B樹的子樹
- 17. 如何在php中刪除子節點
- 18. 如何刪除樹節點並向上移動其節點節點?
- 19. 從樹中刪除選定的節點
- 20. C++ - 刪除AVL樹中的節點
- 21. 刪除從乙樹中的節點
- 22. 刪除家族樹中的節點
- 23. 刪除C#樹中的節點
- 24. 如何刪除節點列表的子節點?
- 25. 刪除空節點和空子節點
- 26. 刪除節點基於子節點值
- 27. 基於父節點刪除子節點
- 28. 刪除節點及其子節點
- 29. 如何將子節點存儲到子節點並刪除直接父節點?
- 30. 刪除一個子節點
我需要在刪除後使用root。 –
好吧,方法是這樣的:void DeleteChildren(){delete left;刪除權利; }':)與上面的方法不同,你應該測試'node!= NULL' – demi