recursion - 二叉搜索树的递归到迭代方法

标签 recursion binary-search-tree

我正在做一项作业,使用递归方法中的迭代方法来获取 BST 的高度。下面将是提供的递归代码和我的代码。它返回的高度比实际高度大一。例如,假设高度为 4,但它返回 5。

//Provided code 
public  int getHeight() {
    return getHeight(root);
}

private int getHeight(Node node) {
    if (node==null) {
        return -1;
    } else {
        int leftHeight = getHeight(node.left);
        int rightHeight = getHeight(node.right);
        return Math.max(leftHeight, rightHeight) + 1;
    }
}

//my code
public int getHeightI() {
    return getHeightI(root);
}

private int getHeightI(Node node) {
    Node curr = node;
    int leftHeight = 0;
    int rightHeight = 0;
    if (curr!=null) {
        while (curr.left!=null) {
            leftHeight++; 
            curr = curr.left;
        } 
        while (curr.right!=null) {
            rightHeight++; 
            curr = curr.right; 
        }
    }   
    return Math.max(leftHeight, rightHeight)+1;
}

最佳答案

您的代码返回的值比树的实际高度高一。我建议您使用此代码

int height(tree* root)
{
if(!root)
{ return -1;
}
else{
return __max(root->left,root->right);
}

希望您能理解自己的错误。

关于recursion - 二叉搜索树的递归到迭代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950703/

相关文章:

java - 二叉搜索树的高度

python - 尝试查找数字的质因数分解,但它返回嵌套列表

haskell - 固定点是什么?

arrays - Bash,递归中使用相同的变量

java - 二叉搜索树 toString

algorithm - 树中的节点是否被视为其自己的祖先?

java - 使用递归来获取数组的子集。 C++ 和 Java 给我不同的结果

c++ - 输入所有子文件夹 - 递归

algorithm - 检查两个二叉搜索树是否具有相同的键

java - 如何实现自调整二叉搜索树?