二叉排序树的创建,查找和插入

原创 2018年04月16日 21:34:59

二叉排序树的查找,插入和创建代码

#include <iostream>
#include<stdlib.h> 

typedef struct BTNode{
    int data;
    BTNode *lchild;
    BTNode *rchild;
}BTNode;

int SearchBTS(BTNode *T,int key,BTNode *f,BTNode *&p){//二叉排序树的查找 
    BTNode *r,*s;
    if(!T){
        p=f;//p指向他爹
        return 0; 
    }else{
        if(key==T->data){
            p=T;
            return 1;
        }else if(key<T->data){
            return SearchBTS(T->lchild,key,T,p);
        }else{
            return SearchBTS(T->rchild,key,T,p);
        }
    }
}

int InsertBST(BTNode *&T,int key){//二叉树的插入 
    BTNode *p,*s;

    if(!SearchBTS(T,key,NULL,p)){
        s=(BTNode *)malloc(sizeof(BTNode));
        s->data=key;
        s->lchild=s->rchild=NULL;
        if(!p){
            T=s;
        }else if(key<p->data){
            p->lchild=s;
        }else{
            p->rchild=s;
        }
        return 1;
    }
    return 0;
}

void createBTS(BTNode *&T,int arr[],int n){
    for(int i=0;i<n;i++){
        InsertBST(T,arr[i]);
    }
}
void LDR(BTNode *T){
    if(T!=NULL){
        LDR(T->lchild);
        printf("%d ",T->data);
        LDR(T->rchild);
    }
}
int main(int argc, char** argv) {
    BTNode *T;
    int arr[]={5,9,35,8,7,21,6,4};
    for(int i=0;i<8;i++){
        InsertBST(T,arr[i]);
    }
    //createBTS(T,arr,8); 
    LDR(T);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37597859/article/details/79967010

数据结构 二叉排序树的创建,查找,插入,删除

Description 实现二叉排序树的创建、查找、插入、删除操作。 Input 10 62 88 58 47 35 73 51 99 37 93 59 58 Output 输入二叉树...
  • mazicwong
  • mazicwong
  • 2016-11-24 15:44:10
  • 2407

二叉排序树的操作(建立、插入、删除和查找)

二叉排序树的建立、插入、删除和查找(删除待补充) #include #include typedef struct node { int key; struct node *lc...
  • yushanjin0767
  • yushanjin0767
  • 2013-08-22 15:55:41
  • 1592

二叉查找树(二叉排序树)创建、插入、删除、查找-C语言

二叉查找树:或者是一颗空树;或者是具有以下性质的二叉树:(1)若它的左子树不为空,则左子树上所有结点的值都小于根结点的值;(2)若它的右子树不为空,则右子树所有结点的值均大于它的根结点的值;(3)左右...
  • haofight
  • haofight
  • 2017-01-12 21:10:40
  • 3087

二叉排序树的基本操作(建立,中序遍历,查找,删除,插入)

分析: 二叉排序树的操作的难点在于删除操作,删除操作时,只需要满足二叉排序树的性质即可,即需要找到要删除结点p的左孩子的最右下方的数替代该结点的数据,然后删除p->lchild的最右下方的结点即可。...
  • llwwlql
  • llwwlql
  • 2015-11-28 20:50:23
  • 1393

二叉排序树的创建,查找,插入,删除

二叉排序树或者是空树,或者是具有以下性质的二叉树: (1)若左子树非空,则左子树上所有结点的关键字的值均小于它的根结点的关键字的值 (2)若右子树非空,则右子树上所有结点的关键字的值均大于等于它的...
  • yxmmao
  • yxmmao
  • 2016-06-06 22:41:49
  • 839

二叉排序树的建立、插入、删除、查找、4种遍历 C++完整实现

#include #include #include using namespace std; typedef int KeyType; #define NUM 13 class BinSTree;...
  • u010367506
  • u010367506
  • 2014-04-01 15:25:44
  • 3032

二叉排序树总结(插入,搜索,排序,中序遍地,递归,非递归)

#include #include #include "stack.h" using std::cout; using std::endl; //#define TEST_STACK ...
  • woods2001
  • woods2001
  • 2011-05-19 13:26:00
  • 2285

动态查找表之二叉排序树(BST)的 创建、查找、插入与删除

动态查找表之二叉排序树(BST)的 创建、查找、插入与删除 数据结构与算法...
  • dalaoadalaoa
  • dalaoadalaoa
  • 2015-07-06 23:49:53
  • 2006

二叉排序树的创建(结点的插入,删除等操作)

二叉排序树的理论看课本 代码如下: BSTree.h struct BSTreeNode; typedef struct BSTreeNode *ptrtreenode; void Make...
  • jw903
  • jw903
  • 2014-05-05 22:49:48
  • 1347

二叉排序树的插入与删除

二叉排序树的插入与删除可能会破坏二叉排序树的性质,现在要求插入和删除操作保持其性质 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的...
  • u014568921
  • u014568921
  • 2015-07-21 10:31:03
  • 1304
收藏助手
不良信息举报
您举报文章:二叉排序树的创建,查找和插入
举报原因:
原因补充:

(最多只允许输入30个字)