计算路径的长度以在二叉搜索树中找到最大值

时间:2016-01-25 23:01:01

标签: java binary-search-tree

如何找到我们用于在二叉搜索树中找到最大值的路径长度(例如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 ;
    }

3 个答案:

答案 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);
}