如何通过归纳证明二叉搜索树是AVL类型的?

时间:2017-11-26 17:22:38

标签: algorithm binary-search-tree induction proof-of-correctness

请问如何通过归纳证明当前测试二进制搜索树是否为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 - 正确的高度。对于所有二叉搜索树,这种算法是正确的。

0 个答案:

没有答案