二叉搜索树的操作集
来源:互联网 发布:藏头诗软件下载 编辑:程序博客网 时间:2024/05/17 13:40
二叉搜索树的操作集
#include <stdio.h>#include <stdlib.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"); return 0;}/* 你的代码将被嵌在这里 */void PreorderTraversal( BinTree bt )//先序遍历二叉树 { if(bt!=NULL) { printf("%d ",bt->Data); PreorderTraversal(bt->Left); PreorderTraversal(bt->Right); }}void InorderTraversal( BinTree bt )//中序遍历二叉树 { if(bt!=NULL) { InorderTraversal(bt->Left); printf("%d ",bt->Data); InorderTraversal(bt->Right); }}BinTree Insert( BinTree BST, ElementType X ){ if(BST==NULL) { BST = (struct TNode *)malloc(sizeof(struct TNode)); BST->Data=X; BST->Left=NULL; BST->Right=NULL; } else if(X<BST->Data) { BST->Left=Insert(BST->Left,X); } else { BST->Right=Insert(BST->Right,X); } return BST;}BinTree Delete( BinTree BST, ElementType X ){ BinTree Tmp; if(!BST) printf("Not Found\n"); else if(X<BST->Data) BST->Left=Delete( BST->Left, X); else if(X>BST->Data) BST->Right=Delete( BST->Right, X); else if(BST->Left&&BST->Right) { Tmp=FindMin(BST->Right); BST->Data=Tmp->Data; BST->Right=Delete(BST->Right, BST->Data); } else { Tmp=BST; if(!BST->Left) BST=BST->Right; else if(!BST->Right) BST=BST->Left; free(Tmp); } return BST;}Position Find( BinTree BST, ElementType X ){ if(!BST) return NULL; if(X==BST->Data) { return BST; } else if(X<BST->Data) { return Find(BST->Left,X); } else if(X>BST->Data) return Find(BST->Right,X);}Position FindMin( BinTree BST ){ if(!BST) return NULL; if( BST->Left != NULL ) return FindMin(BST->Left); else return BST;}Position FindMax( BinTree BST ){ if(!BST) return NULL; if( BST->Right != NULL ) return FindMax(BST->Right); else return BST;}
阅读全文
0 0
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作题集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 二叉搜索树的操作集
- 搜索二叉树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 二叉搜索树操作集
- 【二叉搜索树】二叉搜索树的基本操作
- 二叉搜索树操作
- 04-树7 二叉搜索树的操作集
- 04-树7 二叉搜索树的操作集
- 04-树7 二叉搜索树的操作集
- Zookeeper注册中心的搭建
- 机器学习中的必修数学(九)
- 用Camera的预览和zXing来写一个二维码扫描功能
- Practise 2
- 数据库中dataTime,Time以及timeStamp字段的差别
- 二叉搜索树的操作集
- (原)win8下编译GLUT
- 数据库索引
- 实验报告_ASE_lab3
- C++——【USACO 3.3.3】——Camelot
- python直观的http与https的区别
- Vector 和 stack
- Linux gettimeofday() function using
- GYM