码迷,mamicode.com
首页 > 其他好文 > 详细

求一棵二叉树的高度

时间:2015-02-07 09:07:54      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:二叉树   高度   递归   

利用递归来求一棵树的高度,基本思想是:对于每一个非空节点,先求取其左子树的高度,然后求取其右子树的高度,最后取两子树中较高的一个加1作为以该节点为根的树的高度;对于空节点,直接返回0就可以了。求整棵树的高度只需将此思想运用到根节点上即可。

struct BST_Node
{
    int m_value;
    BST_Node* left_child;
    BST_Node* rigth_child;
};

class BSTree
{

private:
    int nodeCount;
    BST_Node* root;
    ...//省略建树及其他操作的方法
    int _GetHeight(BST_Node* node)
    {
        if(node == NULL)
            return 0;
        int leftHeight = _GetHeight(node->left_child);
        int rightHeight = _GetHeight(node->rigth_child);
        int GreaterHeight = leftHeight > rightHeight ? leftHeight : rightHeight;
        return 1 + GreaterHeight;
    }
public:
    BSTree()
        :nodeCount(0),root(NULL)
    {

    }
    ...//省略析构函数及其他操作树的方法
    int GetHeight()
    {
        return _GetHeight(root);
    }
};

//测试代码
int _tmain(int argc, _TCHAR* argv[])
{
    int myarray[] = {10,6,15,4,8,1,17,14,5,13,7,11,9,12,16};
    BSTree tree;
    ...//省略建树及先序遍历树的语句
    int height = tree.GetHeight();
    cout<<height<<endl;
    return 0;
}

//结果截图
技术分享

求一棵二叉树的高度

标签:二叉树   高度   递归   

原文地址:http://blog.csdn.net/liao_jian/article/details/43600951

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!