java binary search tree find closest leaf
我很难找到最接近叶子的高度。我只计算了所有的叶子。我是否需要将递归调用分成两个条件语句来分别检查每个条件语句?如有任何帮助或建议,我们将不胜感激。
这是我的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //find the distance to the closest leaf public int closeLeaf() { int distance; return distance = closeLeaf(root); } private int closeLeaf(StringNode n) { int dist = 0; if(n == null) { dist = 0;//empty tree } else if(n.getLeft()== null && n.getRight()== null) { dist++; } else { dist =closeLeaf(n.getLeft()) + closeLeaf(n.getRight()); } return dist; } |
返回值
请不要这样做:
1 2 | int distance; return distance = closeLeaf(root); |
公正:
1 | return closeLeaf(root); |
号关于真正的问题
在这里,你把每片叶子的距离加起来:
1 | dist = closeLeaf(n.getLeft()) + closeLeaf(n.getRight()); |
您可能只想得到两个值中的最小值(告诉您到最近值的距离)。
而不是
dist =closeLeaf(n.getLeft()) + closeLeaf(n.getRight());
号
对于遇到的每个节点,使用一个每次调用
将递归限制为查找叶,当找到叶时,EDOCX1的值(0)将给出最近叶的高度。