Java 销毁二叉树

2019-04-09 11:35:19 +08:00
 mart1nN

public class TreeNode {

private TreeNode left;

private TreeNode right;

private String data = null;

}

public class BinaryTree {

//只有这一个属性
private TreeNode root;

//销毁二叉树
public void deleteTree(){...}

} 是这样写了一个二叉树的模型,销毁的时候用了后序遍历算法将每一个结点指向 null,请问 BinaryTree 实例中所有的属性都为 null 但是实例本身不为 null 我还需要处理它吗?

2697 次点击
所在节点    算法
7 条回复
pwrliang
2019-04-09 12:19:06 +08:00
没太懂实例本身不为 null 是什么意思。我觉得销毁 tree 把根节点的引用弄丢了,gc 算法搜不到了就会把树的所有节点当成 garbage 回收。
mart1nN
2019-04-09 15:32:32 +08:00
我是这样:tree 实例里有一个 node 类的根结点属性。只把根结点的引用赋 null,tree 实例确实还是存在的。但是听你的意思是可以直接 tree = null ?因为我没了解过 jvm,不明白这样合适吗?不知道 gc 是怎么的回收这么大一棵树。。。
kiddult
2019-04-09 15:46:30 +08:00
@mart1nN 你这个场景应该是在学习数据结构或者算法?如果是的话,tree=null 不需要在函数里面实现,这个由调用 Tree 的方法负责
mart1nN
2019-04-09 19:59:46 +08:00
@kiddult 顿悟了。谢谢大哥
eret9616
2019-04-09 20:57:29 +08:00
BinaryTree 中都有什么属性啊 你倒是讲讲
mart1nN
2019-04-10 12:24:07 +08:00
@eret9616 哥们我代码都贴那里了
eret9616
2019-04-10 15:55:37 +08:00
@mart1nN 二叉树类只有一个 root 结点啊 .. 实例对象会被垃圾回收的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/553286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX