我想知道删除整个二叉搜索树的最有效方法。也不要让任何内存泄漏,因此必须首先检查子树中的所有节点是否都被删除。
我想不出除了后序遍历之外的任何有效方法,随你去删除。有什么建议或想法吗?
我想知道删除整个二叉搜索树的最有效方法。也不要让任何内存泄漏,因此必须首先检查子树中的所有节点是否都被删除。
我想不出除了后序遍历之外的任何有效方法,随你去删除。有什么建议或想法吗?
只需将根节点设置为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)
在上述情况下......