二叉搜索树
2010-05-14 19:06
218 查看
#include<stdio.h> typedef struct tagNode { int data; struct tagNode *lchild; struct tagNode *rchild; }NODE,*PNODE; void Insert(PNODE &pNode,int &data) { if(pNode) { if(data>pNode->data) Insert(pNode->rchild,data); else if(data<pNode->data) Insert(pNode->lchild,data); return; } pNode=new NODE; pNode->lchild=NULL; pNode->rchild=NULL; pNode->data=data; } PNODE &FindMin(PNODE&pNode) { if(pNode) if(pNode->lchild) return FindMin( pNode->lchild); return pNode; } PNODE &Find(PNODE &pNode,int &data) { if(pNode) { if(data>pNode->data) return Find(pNode->rchild, data); else if(data<pNode->data) return Find(pNode->lchild, data); } return pNode; } void DeleteNode(PNODE &root,int&data) { PNODE &pNode=Find(root,data); if(pNode) { if(pNode->rchild==NULL) { pNode=pNode->lchild; delete pNode; } else { PNODE &p=FindMin( pNode->rchild); PNODE tmp=p; p=NULL; tmp->lchild=pNode->lchild; tmp->rchild=pNode->rchild; delete pNode; pNode=tmp; } } } int main() { int a[]={63,90,70,55,67,42,98,83,10,45,58}; int n,c; PNODE root=NULL ,tmp; for(int i=0;i<sizeof(a);i++) Insert(root,a[i]); printf("1------add a num/n"); printf("2------delete a num/n"); printf("3------find a num/n"); while(1) { printf("please input a case:/n"); scanf("%d" ,&c); switch(c) { case 1: printf("please input a number to add:/n"); scanf("%d",&n); Insert(root,n); break; case 2: printf("please input a number to delete:/n"); scanf("%d",&n); DeleteNode(root,n); break; case 3: printf("please input a number to find:/n"); scanf("%d" ,&n); tmp=Find(root,n); if(tmp!=NULL) printf("find%d/n ",tmp->data); else printf("not find/n"); break; } } return 0; }
相关文章推荐
- 二叉搜索树的第k个结点
- 二叉搜索树的基本操作
- 判断某数组是不是二叉搜索树的后序遍历序列
- 是否完全二叉搜索树 (30分)
- pta 是否完全二叉搜索树 (树的遍历)
- 剑指Offer面试题26复杂链表的复制,面试题27二叉搜索树和双向链表(递归)
- 63:二叉搜索树的第k个结点
- 二叉搜索树与双向链表
- 二叉搜索树(篇1)判断数组是不是二叉搜索树后序遍历的结果
- PTA 5-1 是否同一棵二叉搜索树(数据结构)
- [LeetCode] Convert BST to Greater Tree 将二叉搜索树BST转为较大树
- 题目1009:二叉搜索树
- PAT 天梯赛 是否同一棵二叉搜索树 (25分)(二叉搜索树 指针)
- PTA习题 5-4 是否同一棵二叉搜索树(二叉搜索树的构建以及相同树的判断)
- 剑指Offer 27 二叉搜索树与双向链表
- 04-树7 二叉搜索树的操作集
- 二叉搜索树的前序遍历
- 剑指offer24:二叉搜索树的后序遍历序列
- 判别两序列所对应两颗二叉搜索树是否相同之建立两颗树4.13
- 判别两序列所对应两颗二叉搜索树是否相同之建立一颗树4.134