首页 / 算法 / java – 遍历树结构的算法遍历
java – 遍历树结构的算法遍历
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 遍历树结构的算法遍历,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1527字,纯文字阅读大概需要3分钟。
内容图文
![java – 遍历树结构的算法遍历](/upload/InfoBanner/zyjiaocheng/778/73965d9e12644038937ce561d3eef912.jpg)
Class Diagnostic {
//Get the size in bytes of an object
static long sizeOf(Object object);
//Get the references for an object (leafs)
static List<Object> getRefs(Object object);
//Implement this with those above
public Long objectSize(Object object);
}
如何实现objectSize以返回对象的字节大小?
方法objectSize返回组合的所有子节点(树上的每个节点)的字节大小.
例:
Object A (19 bytes)
/ / B(20) C(37)
/
/
C(15)
答案:19 20 37 15 = 91
我在面试时遇到了这个问题,我很好奇看到别人的答案.因为,我对树遍历算法知之甚少.
我想出了这个……(我知道这是不好的;),只是想学习)
public Long objectSize(Object object) {
List<Object> objectList = new ArrayList<Object>();
Long sum = sizeOf(object);
objectList = getRefs(object);
for(Object object : objectList){
sum += objectSize(object);
}
return sum;
}
我注意到我可以有一个循环并运行stackoverflow错误,因为我没有检查我是否已经通过“节点”.然后我很难,我应该有另一个数据结构(如处理键/值的散列图)来处理临时列表以进行比较.
解决方法:
如果你正在处理一个真正的“树”结构,那么你不必担心周期.
你有基本的想法,但你需要考虑递归调用的实际返回值.如果我们假设对象的总大小(objectSize())等于其子项的大小加上它自己的大小(sizeOf()),那么您只需要确保将所有子树大小添加到一起.
这是你可以做到的一种方式:
public Long objectSize(Object object) {
List<Object> objectList = getRefs(object);
long sum = sizeOf(object);
for(Object object : objectList) {
sum += objectSize(object);
}
return Long.valueOf(sum);
}
您缺少的是递归的objectSize调用返回了一个值,并且该值需要包含(在这种情况下通过添加)到您的返回值中.
内容总结
以上是互联网集市为您收集整理的java – 遍历树结构的算法遍历全部内容,希望文章能够帮你解决java – 遍历树结构的算法遍历所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。