博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉搜索树(排序二叉树)
阅读量:5095 次
发布时间:2019-06-13

本文共 1543 字,大约阅读时间需要 5 分钟。

 

完整代码:插入,查找,删除

struct BST {    int val;    BST *lch, *rch;    BST *insert(BST *p, int x) {        if (p == NULL)  {            BST *t = new BST;				//new出来的不是指向NULL的            t->val = x;            t->lch = t->rch = NULL;            return t;        }        if (x <= p->val)    p->lch = insert (p->lch, x);        else    p->rch = insert (p->rch, x);        return p;    }    bool find(BST *p, int x)   {        if (x == p->val)    return true;        else if (p == NULL) return false;        else if (x <= p->val)    {            return find (p->lch, x);        }        else    {            return find (p->rch, x);        }    }    BST *remove(BST *p, int x)  {			//返回被删除后的新结点的地址        if (p == NULL)  return NULL;        else if (x <= p->val)   p->lch = remove (p->lch, x);        else if (x > p->val)    p->rch = remove (p->rch, x);        else if (p->lch == NULL)    {		//如果需要删除的结点没有左儿子,那么把右儿子提上去            BST *t = p->rch;            delete p;            return t;        }        else if (p->lch->rch == NULL)   {	//如果需要删除的结点的左儿子没有右儿子,那么把左儿子提上去            BST *t = p->lch;            t->rch = p->rch;            delete p;            return t;        }        else    {							//以上两种情况不满足,把左儿子子孙中值最大的结点提上去            BST *t = p->lch;            while (t->rch->rch != NULL) t = t->rch;            BST *r = t->rch;            t->rch = r->lch;            r->lch = p->lch;            r->rch = p->rch;            delete p;            return r;        }        return p;    }}bst;

  

转载于:https://www.cnblogs.com/Running-Time/p/5011529.html

你可能感兴趣的文章
网络编程
查看>>
关于“设计模式”和“设计程序语言”的一些闲话
查看>>
(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
查看>>
python学习4 常用内置模块
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
ResolveUrl的用法
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
华为离职副总裁徐家骏:年薪千万的工作感悟
查看>>
java SE :标准输入/输出
查看>>
sublimie 知乎
查看>>
一些方便系统诊断的bash函数
查看>>
Floyd算法 - 最短路径
查看>>
【转载】基于vw等viewport视区相对单位的响应式排版和布局
查看>>
<转>关于MFC的多线程类 CSemaphore,CMutex,CCriticalSection,CEvent
查看>>
《你们都是魔鬼吗》实验十二 团队作业八:Alpha冲刺
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
[Leetcode]942. DI String Match
查看>>
css3之transform-origin
查看>>
1003 Emergency
查看>>