91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

二叉樹的實現

發布時間:2020-07-21 23:51:42 來源:網絡 閱讀:279 作者:hhaxy77 欄目:編程語言

BinaryTree.h

#pragma once
template <class T>
struct BinaryTreeNode
{
 BinaryTreeNode<T>* _right;
 BinaryTreeNode<T>* _left;
 T _data;
 BinaryTreeNode(const T& d)
  :_right(NULL)
  ,_left(NULL)
  ,_data(d)
 {}
};
template <class T>
class BinaryTree
{
 typedef BinaryTreeNode<T> 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>& 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<<endl;
 }
protected:
 Node* _CreatTree(const T* a, size_t size, size_t& index, const T& invalid)
 {
  Node* root = NULL;
  if(index<size && a[index]!=invalid)
  {
   root = new Node(a[index]);
   root->_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<<root->_data<<",";
  _PrevOrder(root->_left);
  _PrevOrder(root->_right);
 }
private:
 Node* _root;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连南| 延安市| 宁陕县| 桓仁| 瑞昌市| 甘德县| 沁源县| 海城市| 东明县| 沭阳县| 宁海县| 和林格尔县| 天祝| 开原市| 泰顺县| 闽清县| 侯马市| 大冶市| 平罗县| 抚松县| 遂平县| 余干县| 万源市| 鲜城| 炎陵县| 南乐县| 罗定市| 祁阳县| 巴南区| 韶关市| 娄底市| 邹平县| 临安市| 东乡| 前郭尔| 淄博市| 漯河市| 长岛县| 醴陵市| 育儿| 阿尔山市|