请问如何通过归纳证明当前测试二进制搜索树是否为AVL类型的算法是正确的?
int checkHeight(TreeNode root){
if(root == null)
return 0;
int leftHeight := checkHeight(root.left);
if(leftHeight == -1)
return -1;
int rightHeight := checkHeight(root.right);
if(rightHeight == -1)
return -1;
int heightDiff := Math.abs(leftHeight - rightHeight);
if(heightDiff > 1)
return -1;
else
return max(leftHeight, rightHeight) + 1;
}
我试过这样的证据。
基础: root为null - 返回0.
归纳步骤:如果我们有一棵树,其中B是根,那么在叶子级别中高度为0,移动到顶部我们取max(0,0)= 0并添加1.身高正确。计算左边节点的高度和右边的高度之间的差值0-0 = 0我们得到它不大于1.结果是0 + 1 = 1 - 正确的高度。对于所有二叉搜索树,这种算法是正确的。