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

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

?? tree.cpp

?? 數據結構:有關樹所有操作
?? CPP
字號:
#include<iostream.h>
#include<assert.h>

const int size=30;
class tree;

class node{
friend class cqueue;
friend class tree;
friend void wirthorder(node *);
friend node *copytree(node *);
friend int depth(node *);
friend void leaf(node *,int &);
friend void printtree(node *,int);
public:
  node():data(0),leftptr(0),rightptr(0){}
  node(int &d):data(d),leftptr(0),rightptr(0){}
  node(int &,node *,node *);
  int getdata(){ return data;}
private:
  node *leftptr;
  node *rightptr;
  int data;
};
node::node(int &value,node *lptr,node *rptr){
    data=value;
    leftptr=lptr;
    rightptr=rptr;
}
class cqueue:public node{
friend void wirthorder(node *);
 public:
   cqueue();
   void input(node *);
   node *output();
   int empty();
 private:
   int count;
   int head;
   int rear;
   node *q[size];
};
cqueue::cqueue():head(0),rear(0),count(0),node(){}
int cqueue::empty(){
  if(count==0) return 1;
    else return 0;
}
void cqueue::input(node *ptr){
  if(count<size){
     q[rear]=ptr;
     rear=(rear+1)%size;
     count++;
  }
    else
      cout<<endl<<"the circular queue is full!";
}
node *cqueue::output(){
  node *temp;
  if(count>0){
    temp=q[head];
    head=(head+1)%size;
    count--;
    return temp;
  }
    else{
	 cout<<endl<<"the circular queue is empty!";
     }
}
class tree{
friend class cqueue;
friend node *copytree(node *);
friend void wirthorder(node *);
public:
  tree(){ cout<<endl<<"tree is builted!"; rootptr=0;}
  ~tree(){ cout<<endl<<"tree is destrcuted!";}
  void insert(int &);
  void preorder();
  void inorder();
  void postorder();
  void findtiem(int &,node *);
  void insertnode(int &);
  void deletenode(int &);
  node *getroot();
private:
  void insertnode(node **,int &);
  void preorder1(node *);
  void inorder1(node *);
  void postorder1(node *);
  node *rootptr;
  node *find(int &,node *&);
};
void tree::deletenode(int &key){
  node *dptr,*pptr=0,*rptr,*prptr;
  dptr=find(key,pptr);
  if(dptr==0) cout<<endl<<"the item not exist!"<<endl;
    else{
      if(pptr==0){
	 cout<<endl<<"Sorry! can't delete root!"<<endl;
	 return;
      }
	else{
	  if((dptr->leftptr==0)&&(dptr->rightptr==0)){
	     if(dptr->data<pptr->data) { pptr->leftptr=0; delete dptr; }
		 else{ pptr->rightptr=0;
		       delete dptr;
		       }
	 }
	 else{
	      if(dptr==pptr->leftptr){
		  if((dptr->leftptr!=0)&&(dptr->rightptr==0)){
		     pptr->leftptr=dptr->leftptr;
		     delete dptr;
		  }
		     else{
		       if((dptr->leftptr==0)&&(dptr->rightptr!=0)){
			    pptr->leftptr=dptr->rightptr;
			    delete dptr;
		       }
			  else{
			    rptr=dptr->leftptr;
			    prptr=dptr;
			    while(rptr->rightptr!=0){
			       prptr=rptr;
			       rptr=rptr->rightptr;
			    }
			    if(prptr==dptr){
				rptr->rightptr=dptr->rightptr;
				pptr->leftptr=rptr;
				}
				else{
				  prptr->rightptr=rptr->leftptr;
				  rptr->leftptr=dptr->leftptr;
				  rptr->rightptr=dptr->rightptr;
				  pptr->leftptr=rptr;
				  delete dptr;
				}
			  }
		     }
	      }
	      else{
		if((dptr->leftptr!=0)&&(dptr->rightptr==0)){
		   pptr->rightptr=dptr->leftptr;
		   delete dptr;
		}
		   else{
		      if((dptr->leftptr==0)&&(dptr->rightptr!=0)){
			 pptr->rightptr=dptr->rightptr;
			 delete dptr;
		      }
			else{
			     prptr=dptr;
			     rptr=dptr->leftptr;
			     while(rptr->rightptr!=0){
				prptr=rptr;
				rptr=rptr->rightptr;
			     }
			     if(prptr==dptr){
				rptr->rightptr=dptr->rightptr;
				pptr->rightptr=rptr;
				delete dptr;
			     }
				else{
				  prptr->rightptr=rptr->leftptr;
				  rptr->leftptr=dptr->leftptr;
				  rptr->rightptr=dptr->rightptr;
				  pptr->rightptr=rptr;
				  delete dptr;
			     }
			}
		   }
	       }
	   }
       }
   }
}
void tree::insertnode(int &value){
    node *iptr=rootptr,*newnode,*piptr=0;
    while(iptr!=0){
       piptr=iptr;
       if(iptr->data<value) iptr=iptr->rightptr;
	  else{
	     if(iptr->data>value) iptr=iptr->leftptr;
		else{
		   cout<<"Oh! duplicate! can't insert!"<<endl;
		   return;
		   }
	  }
    }
    newnode=new node(value);
    if(piptr->data>value) piptr->leftptr=newnode;
       else piptr->rightptr=newnode;
}
void tree::findtiem(int &key,node *parent){
    node *p;
    p=find(key,parent);
    if(p!=0){
	cout<<"find! currptr->data: "<<p->data;
	if(parent!=0)
	     cout<<" and parent item: "<<parent->data;
		 else
		    cout<<" this is root node no parent node!";
	}
	else  cout<<endl<<"Sorry! no find!";
}
node *tree::getroot(){ return rootptr;}
node *tree::find(int &key,node *&parent){
     node *currptr=rootptr;
     parent=0;
     while(currptr!=0){
       if(currptr->data==key) break;
	 else{
	    if(currptr->data>key){
		 parent=currptr;
		 currptr=currptr->leftptr; }
	       else{
		    parent=currptr;
		    currptr=currptr->rightptr;
		   }
	    }
     }
     return currptr;
}
void tree::insert(int &value){ insertnode(&rootptr,value);}
void tree::insertnode(node **ptr,int &value){
   if(*ptr==0){
     *ptr=new node(value);
     assert(*ptr!=0);
   }
   else
     if(value<((*ptr)->data))  insertnode(&((*ptr)->leftptr),value);
	else
	  if(value>((*ptr)->data))  insertnode(&((*ptr)->rightptr),value);
	    else
	      cout<<value<<"  dup!"<<endl;
}

void tree::preorder(){ preorder1(rootptr);}
void tree::inorder(){ inorder1(rootptr);}
void tree::postorder(){ postorder1(rootptr);}

void tree::preorder1(node *ptr){
   if(ptr!=0){
   cout<<ptr->data<<" ";
   preorder1(ptr->leftptr);
   preorder1(ptr->rightptr);
   }
}
void tree::inorder1(node *ptr){
   if(ptr!=0){
   inorder1(ptr->leftptr);
   cout<<ptr->data<<" ";
   inorder1(ptr->rightptr);
   }
}
void tree::postorder1(node *ptr){
   if(ptr!=0){
   postorder1(ptr->leftptr);
   postorder1(ptr->rightptr);
   cout<<ptr->data<<" ";
   }
}
node *copytree(node *ptr){
  node *newlptr,*newrptr,*newnode;
      if(ptr==0) return 0;
	else{
	  if(ptr->leftptr!=0)
	      newlptr=copytree(ptr->leftptr);
		 else
		    newlptr=0;
	  if(ptr->rightptr!=0)
	      newrptr=copytree(ptr->rightptr);
		 else
		    newrptr=0;

	  newnode=new node(ptr->data,newlptr,newrptr);
	  return newnode;
      }
}
int depth(node *ptr){
  if(ptr==0) return 0;
    else
      return 1+(depth(ptr->leftptr)>depth(ptr->rightptr)?depth(ptr->leftptr):depth(ptr->rightptr));
}
void leaf(node *ptr,int &count){
   if(ptr!=0){
	leaf(ptr->leftptr,count);
	leaf(ptr->rightptr,count);
	if((ptr->leftptr==0)&&(ptr->rightptr==0)) count++;
   }
}
void blank(int n){
  for(int i=0;i<n;i++)
    cout<<" ";
}
void printtree(node *ptr,int lever){
  if(ptr!=0){
     printtree(ptr->leftptr,lever+1);
     blank(6*lever);
     cout<<ptr->data<<endl;
     printtree(ptr->rightptr,lever+1);

  }       
}
void wirthorder(node *root){
    node *ptr=root;
    cqueue a;
    if(root==0) cout<<endl<<"the tree empty!";
    else{
    a.input(root);
    while(a.empty()==0){
      ptr=a.output();
      cout<<ptr->data<<" ";
      if(ptr->leftptr!=0) a.input(ptr->leftptr);
      if(ptr->rightptr!=0) a.input(ptr->rightptr);
    }
  }
}
main(){
tree inttree;
node *parent,*copynode;
int intval=0,deep,lever=0,leafcount=0;
cout<<endl<<"enter num to built tree(999 to exit)."<<endl;
while(intval!=999){
  cout<<"enter(999 to exit):";
  cin>>intval;
  if(intval==999) break;
   else
     inttree.insert(intval);
}
cout<<"preorder:";
inttree.preorder();
cout<<endl<<"inorder:";
inttree.inorder();
cout<<endl<<"postorder:";
inttree.postorder();
cout<<endl<<"wirthorder:";
wirthorder(inttree.getroot());
cout<<endl<<"the deep: ";
cout<<depth(inttree.getroot());
cout<<endl<<"the number of leaf:";
leaf(inttree.getroot(),leafcount);
cout<<leafcount;
cout<<endl<<"--------the graph of tree-------"<<endl;
printtree(inttree.getroot(),lever);
intval=0;
cout<<endl<<"enter key to find(999 to exit)."<<endl;
while(intval!=999){
   cout<<"enter key to find(999 to exit):";
   cin>>intval;
   if(intval==999) break;
      else
	inttree.findtiem(intval,parent);
}
intval=0;
cout<<endl<<"--enter item to insert in the tree(999 to exit)."<<endl;
while(intval!=999){
   cout<<"--enter to insert(999 to exit):";
   cin>>intval;
   if(intval==999) break;
      else{
       inttree.insertnode(intval);
       printtree(inttree.getroot(),lever);
       cout<<endl<<"inorder:"<<endl;
       inttree.inorder();
       }
}
cout<<endl<<"--------the graph of tree-------"<<endl;
printtree(inttree.getroot(),lever);
cout<<"preorder:";
inttree.preorder();
cout<<endl<<"inorder:";
inttree.inorder();
cout<<endl<<"postorder:";
inttree.postorder();
cout<<endl<<"wirthorder:";
wirthorder(inttree.getroot());
cout<<endl<<"the deep: ";
cout<<depth(inttree.getroot());
cout<<endl<<"the number of leaf:";
leafcount=0;
leaf(inttree.getroot(),leafcount);
cout<<leafcount;
intval=0;
cout<<endl<<"--enter item to delete(999 to exit)."<<endl;
while(intval!=999){
  cout<<"--enter to delete(999 to exit):";
  cin>>intval;
  if(intval==999) break;
    else{
      inttree.deletenode(intval);
      printtree(inttree.getroot(),lever);
      cout<<endl<<"inorder:"<<endl;
      inttree.inorder();
      }
}
cout<<endl<<"--------the graph of tree-------"<<endl;
printtree(inttree.getroot(),lever);
cout<<"preorder:";
inttree.preorder();
cout<<endl<<"inorder:";
inttree.inorder();
cout<<endl<<"postorder";
inttree.postorder();
cout<<endl<<"wirthorder:";
wirthorder(inttree.getroot());
cout<<endl<<"the deep: ";
cout<<depth(inttree.getroot());
leafcount=0;
cout<<endl<<"the number of leaf:";
leaf(inttree.getroot(),leafcount);
cout<<leafcount;
cout<<endl<<"the copy tree:";
cout<<endl<<"--------the graph of the copy tree-------"<<endl;
copynode=copytree(inttree.getroot());
lever=0;
printtree(copynode,lever);
return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区免费播放| 国产精品你懂的| 亚洲高清在线精品| 欧美性受xxxx黑人xyx| 亚洲乱码国产乱码精品精98午夜 | 午夜视频久久久久久| 欧美日韩日日摸| 极品美女销魂一区二区三区免费 | 狠狠色综合日日| 国产日韩欧美麻豆| 一本一本大道香蕉久在线精品| 亚洲日本在线天堂| 欧美色涩在线第一页| 免费高清在线一区| 久久―日本道色综合久久| 福利一区二区在线| 亚洲日本在线视频观看| 欧美日韩免费高清一区色橹橹| 日韩高清不卡一区| 国产亚洲婷婷免费| 91成人看片片| 久久精品国产亚洲一区二区三区 | 欧美性感一类影片在线播放| 日韩国产欧美视频| 欧美国产国产综合| 在线看不卡av| 国内久久婷婷综合| 亚洲欧美日韩国产综合| 日韩一区二区三区视频在线| 国产成人a级片| 亚洲777理论| 国产日韩欧美综合一区| 欧美日韩视频在线观看一区二区三区| 久久成人免费网站| 国产精品传媒入口麻豆| 制服丝袜激情欧洲亚洲| 国产精品 日产精品 欧美精品| 亚洲综合一区在线| 国产午夜精品一区二区三区嫩草| 在线看国产一区| 国产精品一区二区久久不卡| 亚洲激情在线激情| 久久丝袜美腿综合| 欧美日韩亚洲国产综合| 波多野结衣一区二区三区 | 国产日韩欧美综合一区| 91福利在线导航| 国产凹凸在线观看一区二区| 午夜影视日本亚洲欧洲精品| 国产精品护士白丝一区av| 欧美日韩免费一区二区三区视频| 国产福利一区在线| 奇米777欧美一区二区| 亚洲美女少妇撒尿| 国产日韩欧美电影| 精品久久久久99| 欧美日韩第一区日日骚| 99视频一区二区| 狠狠色狠狠色综合系列| 男人的j进女人的j一区| 亚洲一区二区三区四区在线| 国产欧美日韩精品一区| 欧美不卡一区二区三区| 91精品国产综合久久国产大片 | 亚洲男人的天堂av| 久久久www成人免费毛片麻豆| 欧美一区二区三级| 欧美二区三区91| 欧美高清一级片在线| 欧美中文字幕一区二区三区亚洲| 波多野结衣一区二区三区| 国产成人免费视| 国产一区二区三区蝌蚪| 久久99精品久久久久久久久久久久 | 亚洲精品亚洲人成人网| 国产精品乱人伦中文| 中文字幕欧美日韩一区| 久久久亚洲精品石原莉奈| 精品国产91九色蝌蚪| 精品电影一区二区| 久久亚洲一区二区三区明星换脸| 精品久久国产97色综合| 精品国产一区二区三区av性色| 日韩欧美一区电影| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91精品国产福利| 日韩你懂的在线播放| 日韩欧美在线综合网| 精品处破学生在线二十三| 国产丝袜美腿一区二区三区| 国产视频一区二区在线| 国产精品电影院| 亚洲自拍偷拍网站| 视频一区视频二区在线观看| 美女看a上一区| 国产一区亚洲一区| 91在线播放网址| 欧美性一区二区| 欧美电视剧在线观看完整版| 精品国产乱码久久久久久久久| 日韩精品一区二区三区在线播放| 久久综合久久99| 日韩美女啊v在线免费观看| 亚洲女厕所小便bbb| 免费观看在线综合色| 国产乱码一区二区三区| 99国产精品国产精品毛片| 欧美性xxxxxx少妇| 日韩欧美你懂的| 国产精品视频观看| 亚洲激情中文1区| 蜜桃av噜噜一区二区三区小说| 久久国产精品一区二区| 粉嫩嫩av羞羞动漫久久久| 欧美三区在线观看| 久久久五月婷婷| 一区二区三区在线观看欧美| 毛片基地黄久久久久久天堂| 成人免费黄色在线| 在线成人免费视频| 中文字幕不卡在线观看| 午夜av区久久| 大桥未久av一区二区三区中文| 欧美日韩精品久久久| 久久久99精品免费观看不卡| 一区二区欧美国产| 国产精品一卡二卡| 欧美猛男超大videosgay| 欧美经典一区二区| 五月天欧美精品| 欧美日韩国产一级| 久久精品免费在线观看| 午夜精品久久久久久久99樱桃| 国产91精品一区二区| 91麻豆精品91久久久久同性| 国产精品区一区二区三区| 日本不卡1234视频| 日本久久电影网| 中文字幕久久午夜不卡| 卡一卡二国产精品| 欧美美女黄视频| 亚洲日本青草视频在线怡红院| 激情综合色综合久久| 欧美亚洲国产一区二区三区va| 国产欧美日韩精品一区| 久久国产精品一区二区| 3751色影院一区二区三区| 一区二区三区欧美亚洲| 成人免费高清视频| 2023国产一二三区日本精品2022| 性久久久久久久久久久久| 91女厕偷拍女厕偷拍高清| 国产日韩av一区| 精品一区二区在线免费观看| 欧美日韩精品三区| 亚洲综合丁香婷婷六月香| 99综合电影在线视频| 国产欧美日本一区视频| 九一九一国产精品| 欧美成人伊人久久综合网| 日韩电影网1区2区| 欧美精品乱码久久久久久| 亚洲精品成人悠悠色影视| 色一情一伦一子一伦一区| 中文字幕日韩欧美一区二区三区| 国产乱人伦偷精品视频不卡| 久久久影院官网| 国产乱国产乱300精品| 久久免费美女视频| 久草在线在线精品观看| 精品国产伦理网| 国产一区免费电影| 国产日产精品一区| 不卡一卡二卡三乱码免费网站| 国产精品三级久久久久三级| 懂色av一区二区在线播放| 日本一区二区三级电影在线观看 | 亚洲国产精品人人做人人爽| 在线视频你懂得一区二区三区| 亚洲免费电影在线| 欧美亚洲国产bt| 婷婷亚洲久悠悠色悠在线播放 | 成人精品国产一区二区4080 | 成人免费在线播放视频| 不卡电影一区二区三区| 亚洲欧美日韩中文播放| 欧美三级视频在线播放| 首页国产丝袜综合| 亚洲精品一区二区三区香蕉| 国产91丝袜在线18| 一卡二卡三卡日韩欧美| 91精品国产综合久久精品麻豆| 日av在线不卡| 久久久久国产精品麻豆| 不卡一卡二卡三乱码免费网站| 一区二区三区欧美| 欧美日韩国产首页| 国产一区二区三区蝌蚪| 久久久久久亚洲综合| 色综合久久88色综合天天免费|