文章目录

  • 题164.pta数据结构题集-04-树7 二叉搜索树的操作集 (30 分)
  • 一、题目
  • 二、题解

题164.pta数据结构题集-04-树7 二叉搜索树的操作集 (30 分)


一、题目

二、题解

Position Find( BinTree BST, ElementType X )
{BinTree T=BST;if(T==NULL||T->Data==X)//找到的T是空树或者对应的数据就是所求则返回T{return T;}else if(T->Data>X)//T的数据若比要找的数更大则接着递归往T的左边找{Find(T->Left,X);}else//再不然就递归往右边找{Find(T->Right,X);}
}Position FindMin( BinTree BST )
{BinTree T=BST;if(T)//防止空树{while(T->Left)//一直往左子树走到底找最小{T=T->Left;}}return T;
}Position FindMax( BinTree BST )
{BinTree T=BST;if(T)//防止空树{while(T->Right)//一直往右子树走到底找最大{T=T->Right;}}return T;
}BinTree Insert( BinTree BST, ElementType X )
{if(!BST)//如果当前的BST是空的了,那么申请节点空间填数据,正式插入树中{BST=(BinTree)malloc(sizeof(struct TNode));BST->Data=X;BST->Left=NULL;BST->Right=NULL;}else{if(X<BST->Data)//要插的数据比当前节点的数据小则往其左子树接着递归插入{BST->Left=Insert(BST->Left,X);}else if(X>BST->Data)//反之往右子树上插入{BST->Right=Insert(BST->Right,X);}}return BST;//返回这个节点
}BinTree Delete( BinTree BST, ElementType X )
{Position Tmp;if(!BST)//已经找到底了节点都空了还则就是没找到{printf("Not Found\n");}else{if(X<BST->Data)//要删除的数据比当前节点数据要小所以接着往其左子树上删{BST->Left=Delete(BST->Left,X);}else if(X>BST->Data)//{BST->Right=Delete(BST->Right,X);}else//正式开始做删除操作{if(BST->Left&&BST->Right)//当要删的节点左右子树都不空{Tmp=FindMin(BST->Right);//我们先找到该节点的右子树上的最小数据对应的节点BST->Data=Tmp->Data;//用那个右子树上的最小数据对应节点数据顶替掉该节点的数据,表示那个节点上位了,这样就不用做一些该指针的处理了BST->Right=Delete(BST->Right,BST->Data);//然后直接去递归删除那个节点}else{Tmp=BST;if(!BST->Left)//缺左孩子就右孩子上位{BST=BST->Right;}else//反之就左孩子上位{BST=BST->Left;}free(Tmp);}}}return BST;
}

题164.pta数据结构题集-04-树7 二叉搜索树的操作集 (30 分)相关推荐

  1. 算法 树7 二叉搜索树的操作集

    全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 题目:本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree ...

  2. 6-1 二叉搜索树的操作集 (30 分)

    大一下半期数据结构 二叉搜索树的操作集 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinT ...

  3. 6-12 二叉搜索树的操作集

    6-12 二叉搜索树的操作集(30 分) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); Bin ...

  4. 04-树7 二叉搜索树的操作集(c语言实现)

    题目 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTr ...

  5. 04-树7 二叉搜索树的操作集 (30 分)

    本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree ...

  6. 6-12 二叉搜索树的操作集 (30 分)

    本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree ...

  7. 数据结构--伸展树(伸展树构建二叉搜索树)-学习笔记

    2019/7/16更新:封装SplayTree进入class:例题:http://poj.org/problem?id=3622 一个伸展树的板子: #include<stdio.h> # ...

  8. 数据结构(三):非线性逻辑结构-特殊的二叉树结构:堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、红黑树、线索二叉树

    在上一篇数据结构的博文<数据结构(三):非线性逻辑结构-二叉树>中已经对二叉树的概念.遍历等基本的概念和操作进行了介绍.本篇博文主要介绍几个特殊的二叉树,堆.哈夫曼树.二叉搜索树.平衡二叉 ...

  9. 数据结构 - 从二叉搜索树说到AVL树(一)之二叉搜索树的操作与详解(Java)

    二叉搜索树(Binary Search Tree),简称BST,顾名思义,一颗可以用于搜索的二叉树.BST在数据结构中占有很重要的地位,一些高级树结构都是其的变种,例如AVL树.红黑树等,因此理解BS ...

  10. (一)BST树(二叉搜索树)

    (一)BST树(二叉搜索树) 1.BST二叉搜索树 1.1BST树的定义 1 BST树也是一个二叉树,故满足递归定义; 2 其次每个节点只存在一个值; 3 需满足左子树值<=根值<=右子树 ...

最新文章

  1. linux 脚本停止自身,Linux系统定时任务时shell脚本停止执行如何解决?
  2. JAVA_OA(六):SpringMVC处理异常
  3. Lucene教程--维护索引、查询对象和相关度排序
  4. gbq6的文件能转换成gbq5_PPT文件转换成PDF怎么转?这些方法能实现快速转换
  5. 使用码云中文乱码问题解决
  6. [C++STL]仿函数用法介绍
  7. html模板(base标签,meta标签,禁用浏览器缓存)+JSP自定义标签荔枝
  8. 搜索引擎的十大秘密(收藏)
  9. 51nod 1101 换零钱 简单dp
  10. 标注所有线段的lisp程序源码_仪表进近图剖面图的详解(五)进近程序高度限制...
  11. linux不识别xfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  12. 随想录(学校研究和公司研发)
  13. angular4获得焦点事件_深究AngularJS——如何获取input的焦点(自定义指令)
  14. sm4 前后端 加密_sm4加密
  15. 采写编杂志采写编杂志社采写编编辑部2022年第10期目录
  16. oracle为什么主键不唯一,Oracle GoldenGate 针对表没有主键或唯一索引的解决方案
  17. 合肥工业大学计算机信息检索报告,合肥工业大学计算机信息检索(图书馆资源利用)作业.doc...
  18. grep -q 大小比较
  19. 58同城自动登录。。分享给大家
  20. 免费Linux CAD应用软件

热门文章

  1. python加减乘除计算器 eval_Python计算器(模拟eval)
  2. 【C++模块实现】| 【07】对于互斥、自旋锁、条件变量、信号量简介及封装
  3. 火车票售票系统需求分析
  4. 视频教程-思科设备管理(CCNA魔鬼训练营系列)-思科认证
  5. VS2019MSDN的下载安装和使用
  6. Linux命令详解词典高频命令(2)
  7. linux软盘镜像下载,Linux系统各发行版镜像下载(持续更新)
  8. 6年后再一次Hello World!这本书让你久等了!
  9. 免费分享一套详细的Hadoop学习视频
  10. python基础教程解压密码_python学习手册视频教程压缩包解压密码?