二叉树的实现-创新互联
BinaryTree.h
成都创新互联是一家专业提供郧西企业网站建设,专注与网站设计制作、成都网站建设、H5场景定制、小程序制作等业务。10年已为郧西众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。#pragma once templatestruct BinaryTreeNode { BinaryTreeNode * _right; BinaryTreeNode * _left; T _data; BinaryTreeNode(const T& d) :_right(NULL) ,_left(NULL) ,_data(d) {} }; template class BinaryTree { typedef BinaryTreeNode Node; public: BinaryTree() :_root(NULL) {} BinaryTree(const T* a, size_t size, const T& invalid) { size_t index = 0; _root = _CreatTree(a, size, index, invalid); } BinaryTree(const BinaryTree & t) { _root = _CopyTree(t._root); } ~BinaryTree() { _Destory(_root); _root = NULL; } size_t Size() //求二叉树结点数目 { return _Size(_root); } size_t Depth() //求二叉树深度 { return _Depth(_root); } void PrevOrder() //前序遍历 { _PrevOrder(_root); cout< _left = _CreatTree(a, size, ++index, invalid); root->_right = _CreatTree(a, size, ++index, invalid); } return root; } Node* _CopyTree(const Node* root) { if(root == NULL) { return NULL; } Node* newRoot = new Node(root->_data); newRoot->_left = _CopyTree(root->_left); newRoot->_right = _CopyTree(root->_right); return newRoot; } void _Destory(Node* root) { if(root == NULL) { return; } _Destory(root->_left); _Destory(root->_right); delete root; } size_t _Size(Node* root) { if(root == NULL) { return 0; } return _Size(root->_left)+_Size(root->_right)+1; } size_t _Depth(Node* root) { if(root == NULL) { return 0; } size_t leftDepth = _Depth(root->_left); size_t rightDepth = _Depth(root->_right); return leftDepth > rightDepth ? leftDepth+1 : rightDepth+1; } void _PrevOrder(Node* root) { if(root == NULL) { return; } cout< _data<<","; _PrevOrder(root->_left); _PrevOrder(root->_right); } private: Node* _root;
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前题目:二叉树的实现-创新互联
当前路径:http://myzitong.com/article/doieci.html