您好,这是我的isBalanced方法和适当的助手。
public boolean isBalanced() {
return isBalancedHelper(root);
}
public boolean isBalancedHelper(Node node) {
if(node == null) {
return true;
}
int heightDif = height(node.left) - height(node.right);
if(Math.abs(heightDif) > 1) {
return false;
}
else {
return isBalancedHelper(node.left) && isBalancedHelper(node.right);
}
}
public int height(Node node) {
if(node == null) {
return 0;
}
return 1 + Math.max(height(node.left), height(node.right));
}
我没有测试失败,因为它在自动分级机中,但是输出消息说明了这一点。
当左子级非null且右空null时,isBalanced()返回true。
我已经看了一段时间了,无法弄清楚为什么它不起作用。有什么建议吗?