求二叉树的高度/销毁一颗二叉树【每日一题】
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; };
相关文章推荐
- 求二叉树的高度/销毁一颗二叉树-->Destroy(Node* root)
- 每日一题之求二叉树的高度并销毁一棵二叉树
- 【每日一题-11】求二叉树高度/销毁一棵二叉树与链表翻转
- 求二叉树的高度/销毁一颗二叉树【递归思想】
- 每日一题——求二叉树的高度,销毁二叉树
- 求二叉树的高度/销毁一颗二叉树
- 二叉树--求二叉树的高度/销毁一颗二叉树
- 求二叉树的高度和销毁一颗二叉树——题集九
- day11之求二叉树的高度+销毁一颗二叉树+链表每K个节点之间逆序
- 假设二叉树采用链接方式存储,编写一个计算一颗二叉树t的高度的函数
- 二叉树的高度 、销毁、链表的翻转(k为一组、n-m 之间)两种实现、
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 数据结构面试题/求二叉树的高度/销毁一棵二叉树-->
- 二叉树的【深/高度】【度为0/1/2的结点数】【遍历】【查找】【销毁】
- 二叉树的创建,遍历,求高度,算出节点数,算出叶子节点数,左右子树的交换,二叉树的销毁。
- 【二叉树】二叉树的高度以及创建 销毁二叉树
- 求一颗二叉树的镜像 【每日一题】
- 销毁一颗二叉树-->Destroy(Node* root)
- 每日一练(40) - 判断二叉树是否是一颗平衡二叉树
- 实现一颗二叉树的层序遍历【每日一题】