日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二叉排序树1

發布時間:2024/9/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉排序树1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉排序樹,是一種規整的二叉樹。每個節點的左子樹都小于他,每個節點的右子樹都大于他。

二叉樹的遍歷:

void InOrderTree(BTree *b){if( !b )return;InOrderTree(b->lchild);printf("%d ",b->data);InOrderTree(b->rchild); }

二叉樹的查找:

int searchTree(BTree *b,int key,BTree *f,BTree *&p){if(!b){p = f;return 0;}else if( key == b->data){p = b;return 1;}else if(key > b->data)return searchTree(b->rchild,key,b,p);elsereturn searchTree(b->lchild,key,b,p); }

二叉樹的插入:

bool insertTree(BTree *b,int key){BTree *p,*s;if(!searchTree(b,key,NULL,p)){s = (BTree *)malloc(sizeof(BTree));s->data = key;s->lchild = s->rchild = NULL;if(!b){b = s;}else if(key < p->data){p->lchild = s;}else{ p->rchild = s;}return true;}elsereturn false; }

全部代碼:

1 #include <stdio.h> 2 #include <stdlib.h> 3 typedef struct bTree{ 4 int data; 5 struct bTree *lchild,*rchild; 6 }BTree; 7 8 void initialTree(BTree *b); 9 bool insertTree(BTree *b,int key); 10 int searchTree(BTree *b,int key,BTree *f,BTree *&p); 11 void InOrderTree(BTree *b); 12 13 int main(){ 14 BTree *b = (BTree *)malloc(sizeof(BTree)); 15 b->data = 5; 16 b->lchild = b->rchild = NULL; 17 initialTree(b); 18 InOrderTree(b); 19 getchar(); 20 return 0; 21 } 22 23 void InOrderTree(BTree *b){ 24 if( !b ) 25 return; 26 InOrderTree(b->lchild); 27 printf("%d ",b->data); 28 InOrderTree(b->rchild); 29 } 30 31 void initialTree(BTree *b){ 32 insertTree(b,5); 33 insertTree(b,3); 34 insertTree(b,6); 35 insertTree(b,2); 36 insertTree(b,1); 37 insertTree(b,8); 38 } 39 int searchTree(BTree *b,int key,BTree *f,BTree *&p){ 40 if(!b){ 41 p = f; 42 printf("++%d\n",p->data); 43 return 0; 44 } 45 else if( key == b->data){ 46 p = b; 47 printf("--%d \n",p->data); 48 printf("找到元素key:%d\n",key); 49 return 1; 50 } 51 else if(key > b->data) 52 return searchTree(b->rchild,key,b,p); 53 else 54 return searchTree(b->lchild,key,b,p); 55 } 56 bool insertTree(BTree *b,int key){ 57 BTree *p,*s; 58 if(!searchTree(b,key,NULL,p)){ 59 printf("%d 沒有出現在樹中,可以插入在%d之后\n",key,p->data); 60 s = (BTree *)malloc(sizeof(BTree)); 61 s->data = key; 62 s->lchild = s->rchild = NULL; 63 if(!b){ 64 b = s; 65 } 66 else if(key < p->data){ 67 p->lchild = s; 68 }else{ 69 p->rchild = s; 70 } 71 return true; 72 }else 73 return false; 74 } View Code

運行示例:

總結

以上是生活随笔為你收集整理的二叉排序树1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。