您的位置:首页 > 其它

求二叉树的高度/销毁一颗二叉树【每日一题】

2017-07-23 13:10 225 查看
template<class T>
struct BinaryTreeNode
{
BinaryTreeNode(const T& data)
:_data(data)
,_pLeft(NULL)
,_pRight(NULL)
{}

T _data;
BinaryTreeNode<T>* _pLeft;
BinaryTreeNode<T>* _pRight;
};
template<class T> class BinaryTree
{
typedef BinaryTreeNode<T> Node;
public:
BinaryTree()
:_pRoot(NULL)
{}
BinaryTree(const T array[],size_t size,const T& invalid)
{
size_t index = 0;
_CreateTree(_pRoot,array,size,index,invalid);
}
//计算二叉树的高度
size_t Height()
{
return _Height(_pRoot);
}
//销毁二叉树
~BinaryTree()
{
_DestroyTree(_pRoot);
}
private:
size_t _Height(Node* pRoot)
{
if(NULL == pRoot)
return 0;
if(NULL == pRoot->_pLeft && NULL == pRoot->_pRight)
return 1;
size_t hLeft = _Height(pRoot->_pLeft );
size_t hRight = _Height(pRoot->_pRight );
return hLeft>hRight ? hLeft+1 : hRight+1;
}
void _DestroyTree(Node* pRoot)
{
if(pRoot)
{
_DestroyTree(pRoot->_pLeft );
_DestroyTree(pRoot->_pRight );
delete pRoot;
pRoot = NULL;
}
}
private:
Node* _pRoot;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树