我写了一个代码来删除树的所有元素。 需要以下建议:
- 在reverseTreeStack方法中,是否可以不使用stack方法参数进行设计?
- 我能否将整个代码设计成一种更好的设计方法?
更新:将 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/