二叉排序树实现
Posted yshun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉排序树实现相关的知识,希望对你有一定的参考价值。
由4,9,0,1,8,6,3,5,2,7创建一个二叉排序树
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 20 #define ElemType int typedef struct BSTNode ElemType data; struct BSTNode *lchild,*rchild; BSTNode,*BSTree; void BSTInsert(BSTree &T,ElemType key) if(T==NULL) T=(BSTree)malloc(sizeof(BSTNode)); T->data=key; T->lchild=NULL; T->rchild=NULL; if(key==T->data) //判断树中是否存在相同关键字的节点 if(key<T->data) BSTInsert(T->lchild,key); if(key>T->data) BSTInsert(T->rchild,key); //二叉排序树的插入 void CreatBST(BSTree &T,ElemType str[MAXSIZE],int n) T=NULL; for(int i=0;i<n;i++) BSTInsert(T,str[i]); //创建二叉排序树 BSTree BSTSearch(BSTree &T,ElemType key) BSTree bst; bst=T; while(bst!=NULL&&bst->data!=key) if(key<bst->data)bst=bst->lchild; else bst=bst->rchild; return bst; //二叉排序树非递归查找 BSTree BSTSearch1(BSTree &T,ElemType key) if(T->data==key) return T; if(T->data>key) return BSTSearch1(T->lchild,key); if(T->data<key) return BSTSearch1(T->rchild,key); //二叉排序树递归查找 void visit(BSTree &T) if(T!=NULL) printf("%d ",T->data); void InOrder(BSTree &T) if(T) InOrder(T->lchild); visit(T); InOrder(T->rchild); int main() BSTree T; BSTree bt; ElemType str[MAXSIZE]=4,9,0,1,8,6,3,5,2,7; CreatBST(T,str,10); printf("中序遍历二叉排序树:"); InOrder(T); printf("\n"); bt=BSTSearch1(T,8); printf("查询到的节点:%d",bt->data);
以上是关于二叉排序树实现的主要内容,如果未能解决你的问题,请参考以下文章