将数据使用树结构存储后,出去的高效!

二叉树基本概念

二叉树也具有天然的递归结构

二叉树不一定是“满”的。以下均为二叉树

二分搜索树基本概念


二分搜索树代码示例

package BinarySearchTree;//二分搜索树同样也是支持泛型的  但是泛型的类型要可比较
public class BinarySearchTree<E extends Comparable<E>> {private class Node {public E e;public Node left, right;public Node(E e) {this.e = e;left = null;right = null;}}private Node root;private int size;public BinarySearchTree() {root = null;size = 0;}public int size() {return size;}public boolean isEmpty() {return size == 0;}
}

二分搜索树添加新元素

复杂写法:

 //向二分搜索树添加新的元素epublic void add(E e) {if (root == null) {root = new Node(e);size++;} else {add(root, e);}}//向以node为根的二分搜索树插入新的元素e  递归算法private void add(Node node, E e) {if (e.equals(node.e)) {return;} else if (e.compareTo(node.e) < 0 && node.left == null) {node.left = new Node(e);size++;return;} else if (e.compareTo(node.e) > 0 && node.right == null) {node.right = new Node(e);size++;return;}if (e.compareTo(node.e) < 0) {add(node.right, e);} else {add(node.right, e);}}

条理写法:

    //向二分搜索树添加新的元素epublic void add(E e) {root = add(root, e);}//向以node为根的二分搜索树插入新的元素e  递归算法private Node add(Node node, E e) {if (node == null) {size++;return new Node(e);}if (e.compareTo(node.e) < 0) {node.left = add(node.left, e);} else if (e.compareTo(node.e) > 0) {node.right = add(node.right, e);}return node;}

二分搜索树查询操作

 //查看二分搜索树是否包含元素eprivate boolean contains(E e) {return contains(root, e);}//查看以node为根的二分搜索树是否包含元素e 递归算法private boolean contains(Node node, E e) {if (node == null)return false;if (e.compareTo(node.e) == 0)return true;else if (e.compareTo(node.e) < 0)return contains(node.left, e);elsereturn contains(node.right, e);}

树、二叉树、二分搜索树相关推荐

  1. Algorithms_二叉树二分搜索树初探

    文章目录 二叉树 特征 二分搜索树 Binary Search Tree 特征 限制(存储的元素必须具有可比性) Code 添加数据 添加数据V2.0 查找 数据 我们简明扼要的整理下二叉树,以及二分 ...

  2. JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆

    JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...

  3. java实现二分搜索树

    1.二分搜索树定义 二分搜索树是一个二叉树 二分搜索树的节点的值大于左子树,小于右子树的值 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FAbuFGnW-158419 ...

  4. 二分搜索树--二叉树

    文章目录 前言 一.二叉树 二.二分搜索树的性质 前言 二分搜索树:在二叉树的基础上,任意一个节点满足大于左子树中的所有节点,小于右子树中的所有节点. 一.二叉树 1.为什么要有树结构: 树结构本身是 ...

  5. 五.树,二叉树,二叉搜索树(BST)和自平衡二叉搜索树(AVL)

    1.树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构 树是由n个节点组成的集合: 如果 n=0, 那这是一颗空树 如果 n>0, 那存在1个节点作为树的根节点,其他节点可以分 ...

  6. 二分查找法及二分搜索树及其C++实现

    二分查找法及二分搜索树及其C++实现 二分查找法 二分查找简介 二分查找的实现 二分搜索树 二分搜索树简介 二分搜索树的实现 二分查找法 二分查找简介 二分查找是一种在每次比较之后将查找空间一分为二的 ...

  7. 算法与数据结构之二分搜索树

    主要介绍:介绍一下二分搜索树相关的知识,有二分查找法.二分搜索树等. 二分查找法 wiki定义 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元 ...

  8. 13.数据结构:二分搜索树

    大家好,我是王有志.关注王有志,回复DSA获取数据结构与算法学习资源. 好久不见,不知道大家这个十一假期过得怎么样?有没有做好迎接7个工作日的准备呢? 接下来就开始我们今天的主题吧,第一个二叉树的应用 ...

  9. 二分搜索树-BST,python实现

    为什么要用二分搜索树 二分搜索树的定义 二叉搜索树的基本功能 初始化二分搜索树的节点 插入元素 查找元素 深度优先遍历 广度优先遍历 删除操作 要删除的节点没有孩子节点 要删除的节点有两个孩子节点 要 ...

最新文章

  1. 可能大家都能跑通的ignite的HelloWorld
  2. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  3. wxWidgets:实现框架构造器
  4. 解决ssh远程连接错误问题
  5. 通过TLS发送的Java邮件
  6. 使用函数_使用TEXT函数生成中文大写金额
  7. javapanel根据内部组件_java gui中怎么用jpanel实现组件的绝对定位
  8. 平均年薪30万的深度学习算法工程师,正面临100万的人才缺口
  9. maven 连接sqlserver
  10. tomcat构建及session保持
  11. QA: Android 开发kotlin换行格式难看问题
  12. android 阻尼动画,Android下拉阻尼效果实现原理及简单实例
  13. 大数据最火的Spark你确定不来了解一下吗?(1)
  14. Pygame详解(十一):Rect 对象
  15. Rockchip RK3288型号获取
  16. Round12—Huffman 树
  17. syn泛洪 过滤_SYN泛洪攻击详解
  18. 《金融时报》:技术的“可为”与“不可为”
  19. APACHE+PHP+MySQL 绿色版安装教程
  20. 怎么关闭win10虚拟服务器,Win10系统怎么关闭hyper-v虚拟机的功能

热门文章

  1. 数据可视化大屏案例 总目录
  2. 【入门】求因数和、因数个数
  3. corrcoef函数的用法
  4. 爬虫之数据保存到txt文本中
  5. 数据库设计开源免费软件EZDML使用教程
  6. 参数提取类毕业论文文献包含哪些?
  7. 你是否真的读懂了回归方程y=ax+b?
  8. 可放在任意桌面位置的透明正计时/倒计时/语音报时/变颜色/变字体免费数字时钟
  9. 基于图关系归纳偏差的小样本交通预测
  10. 这篇面试指南我吹不动了,凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer