我正在尝试实现一种方法,该方法检查给定的二进制搜索树是否在给定的容差范围内平衡。这是我到目前为止的代码。我没有比这更进一步的想法。无论谁回答这个问题,你能否提供一个解释?这对你非常有帮助。
平衡树是平衡的,如果树中的每个节点,每个节点子节点的深度最多只有一些容差。给定一个BinaryTreeNode和一个容差的链接,如果root是平衡的,则返回true,否则返回false。
容差是决定树是否平衡的最大容差
如果树是平衡的,则返回true,否则返回false。 如果root是== null,我希望它抛出nullpointerexception 如果公差<&lt;而且是非法的。 0
我的代码的问题是该行
if(computeHeight(root) == -1){
类型computeHeight不适用于参数
我有一个getDepth()方法,它返回节点所在的级别
public <T> boolean isBalanced(BinaryTreeNode<T> root, int tolerance) {
// TODO Auto-generated method stub
if(root == null){
throw new NullPointerException();
}
if(tolerance < 0){
throw new IllegalArgumentException();
}
if(computeHeight(root) == -1){
return false;
}
else{
return true;
}
}
public int computeHeight(BinaryTreeNode<T> root){
if(root == null){
return 0;
}
int leftHeight = computeHeight(root.getLeftChild());
if(leftHeight == -1){
return -1;
}
int rightHeight = computeHeight(root.getRightChild());
if(rightHeight == -1){
return -1;
}
int heightDifference = Math.abs(leftHeight - rightHeight);
if(heightDifference > 1){
return -1;
}
else{
return Math.max(leftHeight, rightHeight) + 1;
}
}