二叉排序树是一种便于查找的一种有序树。其中二叉排序树的左子树均小于其根结点的值,右子树均大于其根结点的值。所以二叉排序树是一种递归的方式建立和查询以及插入。由于二叉树的删除有点儿复杂,所以没有给出代码。删除大体上是三种情况:1.直接删除叶子结点2.删除只带有一个分支的结点,让其分支节点直接代替其根结点3.删除多个分支的结点,让删除结点的中序序列直接后继代替被删结点。下面请看详细的代码:

#include <iostream>#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef struct BSTNode{    int data;    struct BSTNode *lchild,*rchild;}BSTNode,*BiTree;//二叉排序树的插入int BST_Insert(BiTree &T,int key){    if(T==NULL){        T = (BSTNode*)malloc(sizeof(BSTNode));        T->data = key;        T->lchild = T->rchild = NULL;        return 1;    }    else if(key == T->data){        return 0;    }    else if(key > T->data){        return BST_Insert(T->rchild,key);    }    else{        return BST_Insert(T->lchild,key);    }} //二叉排序树的查找BSTNode* BST_Search(BiTree T,int key){    if(T==NULL){        return NULL;    }    else if(key > T->data){        return BST_Search(T->rchild);    }    else{        return BST_Search(T->lchild);    }}//构造二叉排序树void Create_BST(BiTree &T,int num[],int n){    T = NULL;    int i = 0;    while(i<n){        BST_Insert(T,num[i]);        i++;    }} int main(int argc, char** argv) {    int num[] = {1,2,3,4,5};    BiTree T;    Create_BST(T,num,5);    BST_Search(T,3);    return 0;}
©著作权归作者所有:来自51CTO博客作者Vitamin_轩辰的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 二叉树
  2. 万字长文!剑指offer全题解思路汇总
  3. 打卡学习 1-28
  4. 其实算法就这么点东西
  5. C语言数组(下)
  6. android从手机中获取通讯录时按名称排序
  7. rxjava2+okhttp3+retrofit2(请求参数按照参数键值从小到大先后顺
  8. Android中list集合的排序方法
  9. Android(安卓)下拉刷新,上拉加载动画,这一个就够了

随机推荐

  1. Android中如何解决输入法键盘和activity
  2. 详解 Android 的 Activity 组件
  3. [置顶] Android 安装详解---Mr.Zhang
  4. Android安全机制探讨
  5. Android 安全攻防(二): SEAndroid bionic
  6. android之shape
  7. “加一”项目总结--android使用篇(二)(转)
  8. Android ROM研究---如何在ubuntu下下载姜
  9. 【译】在JitPack发布自己的Android库
  10. [Android] 对android:layout_weight的一