二叉搜索树的操作集
来源:互联网 发布:识别蘑菇的软件 编辑:程序博客网 时间:2024/05/02 11:05
如题↑,我只是怕忘掉。。所以放这儿备用
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>typedef int ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};void PreorderTraversal( BinTree BT ); /* 先序遍历*/void InorderTraversal( BinTree BT ); /* 中序遍历 */BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( BinTree BST );Position FindMax( BinTree BST );int main(){ BinTree BST, MinP, MaxP, Tmp; ElementType X; int N, i; BST = NULL; scanf("%d", &N); for ( i=0; i<N; i++ ) { scanf("%d", &X); BST = Insert(BST, X); } printf("Preorder:"); PreorderTraversal(BST); printf("\n"); MinP = FindMin(BST); MaxP = FindMax(BST); scanf("%d", &N); for( i=0; i<N; i++ ) { scanf("%d", &X); Tmp = Find(BST, X); if (Tmp == NULL) printf("%d is not found\n", X); else { printf("%d is found\n", Tmp->Data); if (Tmp==MinP) printf("%d is the smallest key\n", Tmp->Data); if (Tmp==MaxP) printf("%d is the largest key\n", Tmp->Data); } } scanf("%d", &N); for( i=0; i<N; i++ ) { scanf("%d", &X); BST = Delete(BST, X); } printf("Inorder:"); InorderTraversal(BST); printf("\n");system("pause"); return 0;}BinTreeInsert(BinTree BST,ElementType X){if(!BST){BST=(BinTree)malloc(sizeof(struct TNode));BST->Left=NULL;BST->Right=NULL;BST->Data=X;}else{if(X>BST->Data)BST->Right=Insert(BST->Right,X);if(X<BST->Data)BST->Left=Insert(BST->Left,X);}return BST;}void InorderTraversal(BinTree BT){ if(BT->Left!=NULL)InorderTraversal(BT->Left);printf("%d ",BT->Data);if(BT->Right!=NULL)InorderTraversal(BT->Right);}void PreorderTraversal(BinTree BT){printf(" %d",BT->Data);if(BT->Left!=NULL)PreorderTraversal(BT->Left);if(BT->Right!=NULL)PreorderTraversal(BT->Right); } Position Find(BinTree BST,ElementType X){if(BST==NULL)return BST;if(BST->Data>X)return Find(BST->Left,X);if(BST->Data<X)return Find(BST->Right,X);if(BST->Data==X)return BST; } Position FindMin(BinTree BST){if(BST->Left!=NULL)return FindMin(BST->Left);elsereturn BST;}Position FindMax(BinTree BST){if(BST->Right!=NULL)return FindMax(BST->Right);elsereturn BST;} BinTree Delete(BinTree BST,ElementType X){if(BST==NULL)printf("Not Found\n");else{if(X>BST->Data)BST->Right=Delete(BST->Right,X);if(X<BST->Data)BST->Left=Delete(BST->Left,X);if(X==BST->Data){if(BST->Left==NULL)return BST->Right;elseif(BST->Right==NULL)return BST->Left;else{BinTree zhan=FindMax(BST->Left);BST->Data=zhan->Data;BST->Left=Delete(BST->Left,zhan->Data);}}}return BST;}
0 0
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作题集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 搜索二叉树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 二叉搜索树操作集
- 【二叉搜索树】二叉搜索树的基本操作
- 二叉搜索树操作
- 04-树7 二叉搜索树的操作集
- 04-树7 二叉搜索树的操作集
- 04-树7 二叉搜索树的操作集
- C++的回调函数的简单实现
- Uva129_构造困难的字符串
- 写给初学者07_android_Layout_一些不常用的布局方式_绝对、表格布局
- 异步与Event Loop
- Luogu-P1057传球游戏(dp)
- 二叉搜索树的操作集
- 利用vector存入拆分的多位数
- Lucene系列
- RESTful服务最佳实践——(十)
- 基于Spring环境的AspectJ开发环境搭建
- Java TCP BIO Example
- HDU 5545 The Battle of Guandu (最短路Dijkstra)
- JSP常用的五个内置对象
- C++常见问题