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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

二叉查找树实现

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉查找树实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉查找樹聲明

#ifndef _Tree_Hstruct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree;SearchTree MakeEmpty(SearchTree T); Position Find( ElementType X,SearchTree T); Position FindMin(SearchTree T); Position FindMax( SearchTree T); SearchTree Insert(ElementType X,SearchTree T); SearchTree Delete(ElementType X,SearchTree T); ElementType Retrieve( Position P);#endifsrtuct TreeNode {ElementType Element;SearchTree Left;SearchTree Right; };

建立一顆空樹

SearchTree MakeEmpty(SearchTree T) {if(T != NULL){MakeEmpty(T->Left);MakeEmpty(T->Right);Free(T);}return NULL; }

二叉查找樹的Find操作

Position Find(ElementType X,SearchTree T) {if(T == NULL)return NULL;if( X < T->Element)return Find(X,T->Left)else if( X > T->Element)return Find(X,T->Right)else return T; }

二叉查找樹的FindMin遞歸實現

Position FindMin(SearchTree T) {if(T == NULL)return NULL;else if( T->Left == NULL)return T;elsereturn FindMin(T->Left); }

二叉查找樹的FindMin非遞歸實現

Position FindMin(SearchTree T) {if(T != NULL)while(T->Left != NULL)T = T->Left;return T; }

二叉查找樹的FindMax遞歸實現

Position FindMax(SearchTree T) {if(T == NULL)return NULL;else if( T->Right == NULL)return T;elsereturn FindMax(T->Right); }

二叉查找樹的FindMax非遞歸實現

Position FindMax(SearchTree T) {if(T != NULL)while(T->Right != NULL)T = T->Right;return T; }

二叉查找樹的插入操作

SearchTree Insert(ElementType X,SearchTree T) {if(T == NULL){T = malloc(sizeof(struct TreeNode));if(T == NULL)FatalError("Out of space!!!");else{T->Element = X;T->Left = T->Right = NULL;}}else if(X < T->Element)T->Left = Insert(X,T->Left);else if( X > T->Element)T->Right = Insert(X,T->Right);return T; }

二叉查找樹的刪除操作

SearchType Delete(ElementType X,SearchTree T) {Position TmpCell;if(T == NULL)Error("Element not found");else if(X < T->Element)T->Left = Delete(X,T->Left);else if(X > T->Element)T->Right = Delete(X,T->Right);else if(T->Left && T->Right){TmpCell = FindMin(T->Right);T->Element = TmpCell->Element;T->Right = Delete(T->Element,T->Right);}else{TmpCell = T;if(T->Left == NULL)T = T->Right;else if(T->Right == NULL)T = T->Left;free(TmpCell);}return T; }

轉載于:https://www.cnblogs.com/y3w3l/p/6363506.html

總結

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

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