亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bstree.cpp

?? 一個關于二叉樹的查詢 插入 刪除 排序的小程序
?? CPP
字號:
// BSTree.cpp: implementation of the BSTree class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "WHBtree.h"
#include "BSTree.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

BSTree::BSTree()
{
    Root=NULL;
	
}

BSTree::~BSTree()
{

}

bool BSTree::Tree_Insert(int x)	
{
	if (Root == NULL)
	{
		Root = new Node(x);//為空則新建一個點
		if (Root == NULL)
		{
			::MessageBox(NULL, "不存在", "錯誤", MB_OK);
	    	return(FALSE);
		}
		Root->HighLight_node = false;
		return(1);
	}
	else
		return Insertnode(x, Root);
			
}

bool BSTree::Insertnode(int x, Node *T)
{
	if (x<T->getkey())               //和左孩子比較
	{
		if (T->getLeft() == NULL)
		{
			Node *Pd = new Node(x);
			if (Pd == NULL)
			{
				::MessageBox(NULL, "不存在", "錯誤", MB_OK);
				return(FALSE);
			}
			T->setLeft(Pd);
			Pd->setParent(T);
			Pd->HighLight_node =false; 
			return(1);
		}
		else
			return Insertnode(x,T->getLeft());
	}
	else if (x>T->getkey())               //和右孩子比較
	{
		if (T->getRight() == NULL)
		{
			Node *Pd = new Node(x);
			if (Pd == NULL)
			{
				::MessageBox(NULL, "不存在", "錯誤", MB_OK);
				return(FALSE);
			}
			T->setRight(Pd);
			Pd->setParent(T);
			Pd->HighLight_node = false;
			return(1);
		}
			  
		else
			return Insertnode(x,T->getRight());
	}
	else 
	{ 

	  ::MessageBox(NULL, "該節點已存在", "", MB_OK);
       T->HighLight_node = true;      //插入值已經存在樹里并設置為高亮點
	 }
	return 0;
}

Node* BSTree::Tree_delete(int x,Node *root)   //樹的刪除函數
{
  Node *f,*p,*q,*s,*r;      //指針p 指向 要刪除的結點
  p=NULL;
  f=root;
  s=NULL;
  r=NULL;
  q=root; 
  if(this->Root!=NULL)  this->Root->setParent(NULL);
  while(q!=NULL)                         //查找要刪除的結點
  {
	  if(x==q->Key) {p=q;q=NULL;}
	  else 
	  { if(x<q->Key) {f=q;q=q->Leftchild;}
		  else {f=q;q=q->Rightchild;}
	  }
  }                                              //查找完畢
 if(p==NULL) 
 {
	 ::MessageBox(NULL, "the number you delete  doesn't  exists", " ", MB_OK);
	 return p;                  //沒有找到
	 
 }

 if (p->Rightchild==NULL&&p->Leftchild==NULL)    
 {  
	 if (p==root)  {this->Root=NULL;}    
	 if (p==f->Leftchild)  {f->Leftchild=NULL;free(p);}
	else {f->Rightchild=NULL;free(p);}
 }
 else if(p->Rightchild==NULL&&p->Leftchild!=NULL)
 {    

	  if(p==root)  {this->Root=p->Leftchild;p->Leftchild->setParent(this->Root);}
	  if(p==f->Leftchild){f->Leftchild=p->Leftchild;q=p->Leftchild;q->setParent(f);free(p);}
      else  {f->Rightchild=p->Leftchild;q=p->Leftchild;q->setParent(f);free(p);}
  }
  else if(p->Rightchild!=NULL&&p->Leftchild==NULL)
  {   
	 
       if(p==root)  {this->Root=p->Rightchild;p->Rightchild->setParent(this->Root);}
       if(p==f->Leftchild) {f->Leftchild=p->Rightchild;q=p->Rightchild;q->setParent(f);free(p);}
	   else  {f->Rightchild=p->Rightchild;q=p->Rightchild;q->setParent(f);free(p);}
  }
  else 
  {
	  s=p->Leftchild;
	  if(s->Rightchild==NULL) 
	  {
		  p->Key=s->Key;
	      p->Leftchild=s->Leftchild;
	      q=s->Leftchild;
		  if (q!=NULL)  q->setParent(p);
	      free(s);
	  }
	  else
	  {
		  r=s->Rightchild;
		  while(r->Rightchild!=NULL) {s=r;r=r->Rightchild;}
		  p->Key=r->Key;
		  s->Rightchild=r->Leftchild;
          q=r->Leftchild;
		  if (q!=NULL) q->setParent(s);
		  free(r);
	  }

  }
 return 0;
}


bool BSTree::ResetColor(Node *T)//判斷是否為高亮節點
{
	if (T != NULL)
	{
		T->HighLight_node = false;
		ResetColor(T->getLeft());
		ResetColor(T->getRight());
	}
	return TRUE;
}


Node * BSTree::Tree_Search(int x, Node *root)//節點的查找函數
{    Node *T;
     T=root;
	while((T!=NULL)&&(T->Key!=x))//所需節點的遍歷
  {
   if(x<T->Key)
	{
     T=T->Leftchild;    
	}
   else
	{
     T=T->Rightchild;
	}
  }

  if(T==NULL)
	 {
	  int status=0;     
      status=AfxMessageBox("can't find the number ,do you want insert the number?",MB_YESNOCANCEL);
      if(status==IDCANCEL) // 在搜索不到時,判斷是否插入此數值
		  return 0;
	  else if (status==IDYES)
	  { 
	    Tree_Insert(x);
		//Node *Pd = new Node(x);
       //Pd->HighLight_node=true;     試圖將插入的點顯示為高亮!!!失敗!!!
	  }
      return T;
	 }
	else if(T->Key==x)  
	{ 
	T->HighLight_node=true;
    ::MessageBox(NULL, "find the number", " ", MB_OK);
	return T;
  }
 else return(0);	
}
 

void BSTree::draw_tree(CDC*g,Node *root)//畫樹(即節點和聯線)
{ 
	if (g==NULL)
		return;
	if(Root==NULL)
		return;
    positiontree(20 ,15);
   draw_edge(g,root);
   draw_node(g,root);
}

void BSTree::draw_edge(CDC*g,Node *root)//畫節點間的聯線
{
	 CPen  pen;
	 pen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	 if(root==NULL)  return; 
	 if (root->getParent()!=NULL)
	 {
		  g->MoveTo(root->x,root->y);
		  g->LineTo((root->getParent())->x,(root->getParent())->y);
	 }
	 	 
     draw_edge(g,root->getLeft());
     draw_edge(g,root->getRight());
     DeleteObject(&pen);
}

void BSTree::draw_node(CDC*g,Node *root)//用MFC中函數畫節點
{
     CPen  pen;
	 CBrush  brush1,brush2;
	 pen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	 brush1.CreateSolidBrush(RGB(255,255,0));
	 brush2.CreateSolidBrush(RGB(255,0,0));

	 if(root==NULL)  return;	
	 if(root->HighLight_node==false)    
	 {	 
	  g->SelectObject(&brush1);
	  g->Ellipse(root->x-15,root->y-15,root->x+15,root->y+15);
      DeleteObject(&brush1);
	 }
    else 
	 {
	  g->SelectObject(&brush2);
	  g->Ellipse(root->x-15,root->y-15,root->x+15,root->y+15);
      DeleteObject(&brush2);
	 }
	 CPen *pOldPen=g->SelectObject(&pen);
	 CString t;
	 t.Format("%.0lf",root->Key);
	 g->TextOut(root->x-8,root->y-8,t);     
	 g->SelectObject(pOldPen);	 
     draw_node(g,root->getLeft());
     draw_node(g,root->getRight());
     DeleteObject(&pen);	
}

void BSTree::positiontree( int upper, int left )
{
	position_tree( Root, upper, left );
}

int BSTree::position_tree( Node *root, int upper, int left )
{
	int l_width, r_width;
    NODE_HEIGHT=20;
	NODE_WIDTH=30;
	if (root == NULL)
		return 0;
	l_width = position_tree( root->getLeft(), upper + NODE_HEIGHT, left );
	root->x = left  + l_width + NODE_WIDTH/2;
	root->y = upper + NODE_HEIGHT;
	r_width = position_tree( root->getRight(), upper + NODE_HEIGHT,
			 root->x + NODE_WIDTH/2 );
	return l_width + NODE_WIDTH + r_width;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色视频| 制服丝袜激情欧洲亚洲| 欧美国产精品久久| 丰满亚洲少妇av| 国产精品视频免费看| 大桥未久av一区二区三区中文| 精品国产一区二区三区久久久蜜月| 亚洲午夜日本在线观看| 一本到不卡免费一区二区| 亚洲人成在线播放网站岛国| 色天天综合久久久久综合片| 一区二区国产视频| 欧美一级一级性生活免费录像| 卡一卡二国产精品| 国产亚洲欧美日韩在线一区| 99精品黄色片免费大全| 亚洲精品老司机| 日韩限制级电影在线观看| 经典三级视频一区| 国产精品久久久久久久久动漫 | 2023国产精品| 99re视频精品| 麻豆国产欧美日韩综合精品二区 | 国产精品久久久久久久浪潮网站| 一本久久精品一区二区| 精品在线播放午夜| 亚洲午夜一区二区| 国产精品灌醉下药二区| 日韩一区二区视频| 在线一区二区三区四区| 秋霞电影一区二区| 国产精品免费视频观看| 日韩亚洲电影在线| 欧美日本乱大交xxxxx| www.色综合.com| 粗大黑人巨茎大战欧美成人| 麻豆精品国产传媒mv男同| 一区二区三区影院| 亚洲欧美日韩成人高清在线一区| 久久品道一品道久久精品| 日韩你懂的在线播放| 欧美一区二区播放| 日韩欧美一区二区不卡| 欧美日韩mp4| 国产日韩欧美精品综合| 日韩午夜激情电影| 日韩精品一区二区三区蜜臀| 欧美一级高清大全免费观看| 91成人在线免费观看| 91麻豆swag| 欧美在线观看视频一区二区三区| 波多野结衣亚洲| 国产精品99久久久久久久女警| 狠狠色丁香久久婷婷综合丁香| 久久国内精品视频| 久久精品国产免费| 久久精品久久久精品美女| 久久国产精品一区二区| 国产在线精品不卡| 99这里只有精品| 欧美日韩一区成人| 日韩精品一区二区三区视频 | 欧美第一区第二区| 久久精品视频免费| 国产精品久99| 亚洲国产精品久久一线不卡| 视频一区视频二区中文| 国产黄色精品视频| 欧美亚洲丝袜传媒另类| 精品久久久久香蕉网| 亚洲免费成人av| 精品伊人久久久久7777人| 国产99久久久久久免费看农村| 成人福利在线看| 欧美丰满一区二区免费视频| 国产色产综合色产在线视频| 婷婷中文字幕一区三区| 92国产精品观看| 精品剧情v国产在线观看在线| 亚洲欧洲性图库| 国产精品456| 欧美一区永久视频免费观看| 欧美韩国日本一区| 狠狠色丁香九九婷婷综合五月| 色狠狠综合天天综合综合| 久久先锋资源网| 午夜电影网亚洲视频| 99r国产精品| 国产精品美女久久久久高潮| 国产专区综合网| 日韩欧美在线影院| 五月天久久比比资源色| 欧美少妇bbb| 亚洲va韩国va欧美va精品| 色先锋aa成人| 亚洲美女视频在线| 欧美艳星brazzers| 亚洲午夜激情av| 欧美日本一区二区在线观看| 日韩高清不卡在线| 3d动漫精品啪啪1区2区免费| 亚洲成人黄色影院| 亚洲精品在线观| 国产成人亚洲综合a∨婷婷图片| 26uuuu精品一区二区| 成+人+亚洲+综合天堂| 综合自拍亚洲综合图不卡区| 99精品黄色片免费大全| 亚洲影视在线观看| 日韩欧美在线观看一区二区三区| 国产美女视频一区| 亚洲色图都市小说| 日韩一区二区免费在线观看| 久久国产乱子精品免费女| 久久久久久亚洲综合影院红桃| 99精品欧美一区二区蜜桃免费| 五月开心婷婷久久| 国产欧美日产一区| 欧美性videosxxxxx| 激情综合色综合久久| 亚洲日本丝袜连裤袜办公室| 日韩一区二区三区免费看| 成人精品gif动图一区| 亚州成人在线电影| 一区在线播放视频| 精品国产一二三| 色综合久久久久久久久久久| 美女任你摸久久| 亚洲18影院在线观看| 欧美激情一区二区三区不卡| 91精品国产麻豆国产自产在线| 国产电影一区二区三区| 日韩avvvv在线播放| 亚洲蜜臀av乱码久久精品| 国产免费成人在线视频| 欧美二区三区91| 91精品办公室少妇高潮对白| 国产高清亚洲一区| 激情小说亚洲一区| 蜜臀久久99精品久久久久宅男| 激情综合网激情| 狠狠v欧美v日韩v亚洲ⅴ| 婷婷久久综合九色综合伊人色| 亚洲欧洲av色图| 中文文精品字幕一区二区| 国产欧美1区2区3区| 久久久欧美精品sm网站| 国产日韩欧美亚洲| 国产精品免费av| 中文字幕在线观看不卡| 国产精品久久久久久久浪潮网站| 久久精品欧美日韩精品| 日本一区二区不卡视频| 中文在线一区二区| 亚洲精品一二三| 亚洲国产综合人成综合网站| 亚州成人在线电影| 国产一区二区在线看| 成人在线综合网| 欧美性生活影院| 欧美一区二区大片| 国产精品亲子伦对白| 一区av在线播放| 蜜桃av一区二区三区电影| 国产传媒久久文化传媒| 波多野结衣一区二区三区| 欧美军同video69gay| 亚洲国产精品成人综合| 亚洲成在线观看| 国产丶欧美丶日本不卡视频| 91福利视频在线| 久久久久久99精品| 午夜婷婷国产麻豆精品| 成人性生交大合| 欧美一卡二卡三卡| 亚洲一区二区在线观看视频| 免费观看91视频大全| eeuss鲁片一区二区三区| 精品欧美乱码久久久久久1区2区| 国产精品久久久久久久久图文区 | 欧美日韩午夜在线| 国产精品网站在线播放| 精品一区二区免费看| 欧美日韩国产小视频| 综合久久给合久久狠狠狠97色 | 不卡欧美aaaaa| 国产日韩亚洲欧美综合| 日韩成人精品在线| 欧美亚洲另类激情小说| 91精品国产综合久久香蕉的特点 | 五月婷婷久久综合| 色综合天天综合网国产成人综合天| 欧美一区二区网站| 亚洲免费伊人电影| 粉嫩一区二区三区在线看 | 亚洲精品高清在线观看| 麻豆极品一区二区三区| 91成人免费网站| 亚洲天天做日日做天天谢日日欢 | 中文字幕欧美激情|