二叉树中的分段错误

时间:2011-04-17 03:10:35

标签: c++ tree segmentation-fault binary-search-tree

要么我一直盯着这段代码太长时间,要么就是我无法想出这个代码。但是当我按降序使用8000号文本文件时; 8000,7999,...我在高度函数中得到了分段错误。如果有人能看一眼,我会非常感激。感谢。

    int BST::height(TreeNode* node)
    {

        int leftSubtree = 0;
        int rightSubtree = 0;
        if (node == NULL)
            return 0;
        else 
        {

            if (node -> getLeft() != NULL)
                leftSubtree = height(node -> getLeft());
            if(node -> getRight() != NULL)      
                rightSubtree = height(node -> getRight());

            if (leftSubtree > rightSubtree)
                return leftSubtree + 1;
            else 
                return rightSubtree + 1;
        }
    }//ends second height

1 个答案:

答案 0 :(得分:1)

如果你有一个排序的数字列表,那么你可能会将它存储在一个列表中(树的最坏情况是O(n),除非它是平衡的)。

在这种情况下,递归例程将递归8000次,堆栈深度为8000.

我不知道这是否足以溢出堆栈,但无论如何你应该在中间阶段看看你的树,看看是否一切都在最左边的分支上。