二叉查找树
来源:互联网 发布:个人简历淘宝客服 编辑:程序博客网 时间:2024/06/06 18:34
1.最值
Position FindMin(BinTree BST) //找最小值 { if(BST) return NULL; else if(!BST->Left) return BST; //找到最左边 else return FindMin(BST->Left); }Position FindMin(BinTree BST) //找最大值 { if(BST){ while(BST->Right){ BST = BST ->Right; } return BST; } return NULL;}
2查找x返回地址
//尾递归实现 Position Find(ElementType x,BinTree BST){ if(!BST) return NULL; if(x>BST->Data) return (x,BST->Right); else if(x<BST->Data) return (x,BST->Left); else return BST;}//迭代循环实现Position IterFind(ElementType x,BinTree BST){ while(BST){ if(x>BST->Data) BST = BST->Right; else if(x<BST->Data) BST = BST->Left; else return BST; } return NULL;}
3.插入
BinTree Insert(ElementType x,BinTree BST){ if(!BST){ BST = (BinTree)malloc(sizeof(struct TreeNode)); BST->Data = x; BST->Left = BST->Right = NULL; }else if(x>BST->Data) BST->Right = Insert(x,BST->Right); else if(x<BST->Data) BST->Left = Insert(x,BST->Left); return BST;}
4.删除
BInTree Delete(ElementType x,BinTree BST){ if(!BST) printf("can't find the data"); else if(x<BST->Data){ BST->Left = Delete(x,BST->Left); }else if(x>BST->Data){ BST->Right = Delete(x,BST->Right); }else if(BST->Right && BST->Left){ Temp = FindMin(BST->Right); BST->Data = Temp->Data; BST->Right = Delete(BST->Data,BST->Right); }else{ Temp = BST; if(!BST->Left) BST = BST->Right; else if(!BST->Right) BST = BST->Left; } free (Temp); return BST;}
阅读全文
0 0
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- POJ 2955 Brackets & POJ 1505 Copying Books & POJ 1651 Multiplication Puzzle(初级区间DP)
- (十五)建造者模式详解(都市异能版)
- find the longest of the shortest HDU
- UNIX环境高级编程——第七章—进程环境
- 二分图匹配模板
- 二叉查找树
- float-清除浮动
- Redis使用记录-相关资料汇总
- 协作设计与团队工作
- (十六)备忘录模式详解(都市异能版)
- hdu6171 双向搜索+hash
- POJ 3268 Silver Cow Party(Dijkstra)
- redis-ruby集群连接异常错误
- Java调优—Btrace监控Java线程/方法执行参数、执行时间(Windows)