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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c语言判断二叉树是不是二叉排序树_C语言:数据结构-树表的查找

發布時間:2025/3/15 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言判断二叉树是不是二叉排序树_C语言:数据结构-树表的查找 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉排序樹的定義

二叉排序樹(Binary Sort Tree)或者是一棵空樹,或者是具有下列性質的二叉樹:

  • 若它的左子樹非空,則在左子樹的所有結點的值都小于它的根結點的值
  • 若它的右子樹非空,則在右子樹的所有結點的值都大于(若允許結點有相同的值,則大于等于)它的根結點的值
  • 左、右子樹也分別是一棵二叉排序樹

簡言之,二叉排序樹的每個結點的值都大于它的左子樹上的所有結點的值,而小于它的右子樹上所有結點的值。圖8-5所示就是一棵二叉排序樹。

二叉排序樹示例

二叉排序樹的性質

中序遍歷二叉排序樹,可以得到一個由小到大的有序序列。

例如,中序遍歷如圖8-5所示的二叉排序樹,其結果序列為(26,40,50,55,58,65,68),是一個由小到大的有序序列。

二叉排序樹的查找

若將查找表按二叉排序樹的結構來組織,即樹中每個結點對應一個記錄,所有記錄的關鍵字值滿足二叉排序樹的要求。對給定的查找值,就能針對二叉排序樹進行查找。具體做法如下:當二叉排序樹為空時,查找失敗;當二叉排序樹非空時,先將給定值與根結點的關鍵字進行比較,若相等則表示查找成功;否則,判斷給定值與根結點關鍵字之間的大小關系,小于根結點則在其左子樹中繼續查找,大于根結點則在其右子樹中繼續查找。很顯然,每次只需要在根結點的左或右子樹中的某一個分支進行查找,因此,查找效率大大提高。

二叉排序樹中結點的結構類型定義如下:

typedef struct Bnode{ int key; struct Bnode *left; struct Bnode *right;} Bnode;

二叉排序樹的查找算法

Bnode *BSearch(Bnode *bt, int k)/*在二叉樹bt中查找關鍵字值為key的記錄*/{Bnode *p;if(bt==NULL)return (bt);p=bt;while(p->key!=k) /*若沒有查找到,繼續查找過程*/{if(kkey) /*準備從左子樹繼續查找*/p=p->left;else p=p->right; /*準備從右子樹繼續查找*/if(p==NULL) break; /*查完能查找的最后一個關鍵字,仍未查到,結束查找*/}Return(p);} 新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的c语言判断二叉树是不是二叉排序树_C语言:数据结构-树表的查找的全部內容,希望文章能夠幫你解決所遇到的問題。

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