⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btree2.c

📁 用VC++
💻 C
字号:
#include "BTree.h"#include <stdlib.h>BTree::BTree(){  root=NULL;}BTree::~BTree(){  DestructTree(root);}void BTree::DestructTree(node* r){  if (r!=NULL)    {      DestructTree(r->left); DestructTree(r->right);      delete r;    }}void BTree::Insert(int elem){  InsertInTree(elem, root);}void BTree::InsertInTree(int x, node *&p){  if (p==NULL) // leaf, create new node    {      p=new node;       p->val=x; p->left=NULL; p->right=NULL;     }  else if (p->val>x)    {      InsertInTree(x, p->left);    }  else if (p->val<x)    {      InsertInTree(x, p->right);      }  else    {    // element already in tree, do nothing    }}void BTree::Delete(int elem){  DeleteFromTree(elem, root);}void BTree::Del(node *&r, node *&q){  if (r->right!=NULL)    {      Del(r->right, q);    }  else    {      q->val=r->val; q=r; r=r->left;     }}void BTree::DeleteFromTree(int x, node *&p){  node *q;    if (p==NULL) {} // key not found!  else if (p->val>x)    {      DeleteFromTree(x, p->left);    }  else if (p->val<x)    {      DeleteFromTree(x, p->right);    }  else  //p->val==x; remove    {      q=p;      if (q->right==NULL)	{	  p=q->left; 	}      else if (q->left==NULL)	{	  p=q->right; 	}      else	{	  Del(q->left, q);	}      delete q;    }}bool BTree::Find(int z){  return FindInTree(z, root);}bool BTree::FindInTree(int z, node *&p){  while (p != NULL)      if (z < p->val)	  p = p->left;      else	if (z > p->val)	    p = p->right;      else	return true;        return false;}int BTree::Max(const int a, const int b){  if(a < b)    return b;  else    return a;}int BTree::Height(){  HeightInTree(root);}int BTree::HeightInTree(const node *T){  if (T == NULL)    return -1;  else     return 1 + Max(HeightInTree(T->left), HeightInTree(T->right));}      int BTree::Size(const node*T){  if (T == NULL)    return 0;  else     return 1 + Size(T->left) + Size(T->right);}int BTree::Leaves(const node *T){  if (T == NULL)    return 1;  else    return Leaves(T->left) + Leaves(T->right);}      double BTree::AvDepth(){  return Size(root)/Leaves(root);}void BTree::PrintInTree(node *&T){  if (T != NULL)    {      cout << T->val<< endl;      PrintInTree(T->left);      PrintInTree(T->right);    }}void BTree::Print(){  PrintInTree(root);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -