二叉查找树的添加,删除,查找算法:

import java.util.Scanner;public class BinarySearchTree<AnyType extends Comparable<? super AnyType>> {BiNode root;class BiNode<AnyType>{AnyType data;BiNode left;BiNode right;public BiNode(AnyType data){this.data=data;}public BiNode(AnyType data,BiNode left,BiNode right){this.data=data;this.left=left;this.right=right;}}//添加public void insert(AnyType x){root=insert(x,root);}public BiNode insert(AnyType x,BiNode t){if(t==null)return new BiNode(x,null,null);int compareResult=x.compareTo((AnyType)t.data); if(compareResult>0)t.right=insert(x,t.right);if(compareResult<0)t.left=insert(x,t.left);else;return t;}//查找public boolean contains(AnyType x){return contains(x,root);}public boolean contains(AnyType x,BiNode t){if(t==null)return false;int compareResult=x.compareTo((AnyType)t.data);if(compareResult>0)return contains(x,t.right);if(compareResult<0)return contains(x,t.left);else return true;}//找最大和最小public AnyType findMin(){return (AnyType) findMin(root).data;}public BiNode findMin(BiNode t){if(t==null)return null;else if(t.left==null)return t;elsereturn findMin(t.left);}public AnyType findMax(){           return (AnyType) findMax(root).data;}public BiNode findMax(BiNode t){if(t==null)return null;else if(t.left==null)return t;elsereturn findMax(t.left);}//删除public void remove(AnyType x){root=remove(x,root); }public BiNode remove(AnyType x,BiNode t){if(t==null)return t;int compareResult=x.compareTo((AnyType)t.data);if(compareResult<0)t.left=remove(x,t.left);else if(compareResult>0)t.right=remove(x,t.right);else if(t.left!=null&&t.right!=null){t.data=findMin(t.right).data;t.right=remove((AnyType)t.data,t.right);}elset=(t.left!=null)?t.left:t.right;return t;   }//中序遍历public void inOrder(){inOrder(root);}public void inOrder(BiNode t){if(t!=null){inOrder(t.left);System.out.print(t.data+"    ");inOrder(t.right);}}public static void main(String[] args) {Scanner sc=new Scanner(System.in);BinarySearchTree<Integer> bsh=new BinarySearchTree<Integer>();for(int i=0;i<6;i++){                                 //输入六个数,个数可改变int numble=sc.nextInt();bsh.insert(numble);}bsh.inOrder();}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/dingxiaoyue/p/4931860.html

二叉查找树的插入,删除,查找相关推荐

  1. 顺序表的插入删除查找遍历

    顺序表的插入删除查找遍历 文章目录 顺序表的插入删除查找遍历 代码 运行结果截图 代码 #define Maxsize 100typedef int ElemType; typedef struct{ ...

  2. 二叉搜索树-php实现 插入删除查找等操作

    二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的 ...

  3. C语言 红黑树插入/删除/查找/遍历

    1 红黑树介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树. 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子 ...

  4. 顺序表插入删除查找操作

    线性表实验 一.实验目的 1.掌握线性表的顺序存储结构 2.验证顺序表及其基本操作的实现 3.理解算法与程序的关系们能够将顺序表算法转换为对应的程序 二.实验步骤 1.建立含有若干个元素的顺序表 2. ...

  5. 静态顺序表创建,初始化,插入,删除,查找

    #include<stdlib.h> #define MaxSize 20 typedef struct {int data[MaxSize];int length; }sqlist; / ...

  6. BST 递归实现二叉树: 插入 删除 查找

    二叉树遍历: 前序遍历: 本身 左子树 右子树 中序遍历: 左子树 本身 右子树 从小到大排列 后续遍历: 左子树 右子树 本身 二叉树前驱: 当前节点左子树最大的节点 二叉树后继: 当前节点右子树最 ...

  7. 【数据结构与算法】之双向链表的创建/遍历/插入/删除/查找的算法实现

    双向链表简介 双向链表是数据结构中重要的结构,也是线性结构中常用的数据结构,双向指针,方便用户从首结点开始沿指针链向后依次遍历每一个结点,结点的前驱和后继查找方便. 其实双向链表和单向链表也是有很多相 ...

  8. c语言二叉排序树的创建与查找,C语言实现二叉查找树的插入和删除操作问题求教...

    使用C语言实现二叉查找树的插入和删除操作,但在 return searchBST( T->rchild, val, f, p);出错.这里应该使用了双指针,求教应该怎么改才正确. /* +--- ...

  9. Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现

    Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...

  10. 数据结构(8-3)二叉排序树(查找、插入删除)

    目录 一.基础理论 1.特点: 2.结构: 二.查找 三.插入 四.删除 1.被删除的结点D是叶子结点 2.被删除的结点D仅有一个孩子 2-1.删除结点14(有左无右) 2-2.删除结点 10 (有右 ...

最新文章

  1. 香港中文大学(深圳)罗元教授招收计算机与信息工程全奖博士
  2. 利用位运算和指针实现的交换两个数的程序
  3. 10分钟搞定让你困惑的 Jenkins 环境变量
  4. java comet_用java实现comet,基于 HTTP长连接的实现,用于从服务端实时发送信息到客户端...
  5. VB6 二维数组去重实现
  6. linux百万行数据加分页符,百万级数据量报表全量导出
  7. cg word List 1
  8. VS2019 WPF制作OTA上位机(二)获取bin文件路径
  9. javascript写的关于静态页面获取URL传递参数的函数[原创]
  10. java框架概念_java概念(2)
  11. bash: jps: command not found
  12. 日本研发高精度诊疗感应器,或颠覆疾病诊疗
  13. mysql 统计本月的_MySql查询当天、本周、本月、本季度、本年的数据
  14. OSN3500 华为SDH全新板卡备件升级扩容
  15. 机器学习基本概念简介上
  16. linux调时区北京,Linux修改系统时间和中国时区
  17. html5数独游戏设计,数独游戏的前端实现
  18. .prettierrc文件的作用
  19. 教你一步一步用VPS
  20. h5页面跳转关注公众号

热门文章

  1. java调用存储过程分页
  2. WebStrom如何设置字体?
  3. 设置SpringMVC默认首页启动
  4. 逻辑漏洞挖掘初步总结篇
  5. 西瓜书学习记录-神经网络(第五章)
  6. 20-forEach循环语句
  7. 自定义线程类中实例变量与其他线程共享与不共享
  8. AlphaGo之父亲授深度强化学习十大法则
  9. 快速查看Gradle项目的类库依赖情况
  10. springcloud微服务实战 学习笔记五 Hystrix服务降级 Hystrix依赖隔离 断路器