如何找到我们用于在二叉搜索树中找到最大值的路径长度(例如A ====> B一步和A ====> B ==== > C三步) 这是我的代码,找到最大值,我已经尝试了她的每一个解决方案,但我没有找到答案
public int findMax(){
if(root == null){ // check if the root is not empty
return 0;
}
Node current = root;
while(current.rightChild != null){
current =current.rightChild ;
}
return current.value ;
}
答案 0 :(得分:0)
如果要查找从根到最大值的路径长度,只需保留一个计数器并在while循环中递增,这样每次遍历到下一个节点时,计数器都会增加1。
答案 1 :(得分:0)
这样的东西?
class Holder {
int length;
}
public int findMax(Holder holder) {
Node current = root;
Node result = null;
while (current != null) {
result = current;
current = current.rightChild;
if (current != null) {
holder.length++;
}
}
return result.value;
}
Holder.length
应该保留返回的长度。
答案 2 :(得分:0)
不保证二叉树是平衡的,因此您需要查看左右儿童。很好地回避,像这样:
public int findMax (Node root) {
return findMaxWork (root, 0);
}
public int findMaxWork (Node node, int level) {
int leftMax = level;
if (node.left != null) leftMax = findMaxWork (node.left, level + 1);
int rightMax = level;
if (node.right != null) rightMax = findMaxWork (node.right, level + 1);
return Math.max(leftMax, rightMax);
}