【发布时间】:2015-07-13 14:04:27
【问题描述】:
问题陈述
给你一个指向二叉树根的指针。打印二叉树的顶视图。 您只需完成该功能。
我的代码:
void top_view(Node root)
{
Node r = root;
if(r.left!=null){
top_view(r.left);
System.out.print(r.data + " ");
}
if(r.right!=null){
System.out.print(r.data + " ");
top_view(r.right);
}
}
每次调用函数时都会执行两个 if 语句,但我只需要执行其中一个。我尝试了 switch,但它给出了常量表达式错误。我已经为这个问题找到了不同的解决方案。
所以我只想知道如果一次执行我们是否只能制作一个,即有没有办法在不改变方法的情况下修复我的代码?
【问题讨论】:
-
你的问题在于你的递归。理想情况下,您只想从根节点左右遍历。一旦下降,你要么想继续向左走,要么继续向右走。但是在使用递归时,您会在所有节点上左右遍历。那是错误的。只需手动浏览您的代码,您就会知道错误。
-
请看我的解决方案,至少给个反应。
-
@Charan 请指出您尚未选择任何答案的原因。
-
@Charan 选择答案意味着该答案以最好的方式解决了您的问题。
-
@Dante 始终关注时间、空间和复杂性。
标签: java data-structures tree treeview binary-tree