java - 删除二叉树——设计建议

标签 java recursion tree binary-tree

我写了一个代码来删除树的所有元素。 需要以下建议:

  1. 在reverseTreeStack方法中,是否可以不使用stack方法参数进行设计?
  2. 我能否将整个代码设计成一种更好的设计方法?

更新:将 reverseTreeStack 的返回类型更改为 void。删除了堆栈的附加变量。

    public class DeleteTree {

    public static void deleteTree(BinaryTreeNode root)
    {       
        Stack stack = new Stack();
        reverseTreeStack(stack, root);
        while (!stack.isEmpty())
        {
            BinaryTreeNode node = (BinaryTreeNode)stack.pop();
            System.out.println("---------Deleting----------->" + node.getData());
            node = null;
        }
    }

    public static void reverseTreeStack(Stack stack,BinaryTreeNode root)
    {
        if (root != null)
        {
            stack.push(root);   
            reverseTreeStack(stack,root.getLeft());
            reverseTreeStack(stack, root.getRight());
        }
    }
}

最佳答案

为什么需要这样做?如果我没记错的话,一旦没有可用的资源引用,JVM 就可以释放资源,因此只需将根节点设置为 null 就可以释放整个树。

关于java - 删除二叉树——设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866261/

相关文章:

java - 代号 "AWT-EventQueue-0"java.lang.UnsupportedClassVersionError : javafx/scene/media/MediaException has been compiled by a more recent version

计算 h 指数

java - 为什么所有 Java 错误在 Scala 中都不被认为是致命的?

java - Java 中的 For 循环

java - 如何计算效率列表中有多少个元素相同?

java - 为什么我会收到 NoSuchElementException?

c - 一棵二叉树中有多少个节点只有一个子节点?

Javascript 递归

c++ - 使用 C++ 通过继承组织树复制

javascript - 使用键值获取对 JSON/JS 对象中任意(深层)嵌套节点的引用