删除整个二叉搜索树的最有效方法

时间:2012-10-12 06:01:18

标签: java binary-tree binary-search-tree

我想知道删除整个二叉搜索树的最有效方法。也不要让任何内存泄漏,因此必须先检查子树中的所有节点是否都被删除。

除了发布订单遍历之外,我无法想到任何有效的方法,随时删除。有什么建议或想法吗?

2 个答案:

答案 0 :(得分:3)

只需将根节点设置为null即可。让垃圾收集器完成它的工作。

答案 1 :(得分:1)

Deleting all leaves from a binary tree线程讨论了删​​除二叉树的所有子节点。

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)