Java如何利用二叉搜索树实现查找,插入,删除,遍历

  介绍

这篇文章将为大家详细讲解有关Java如何利用二叉搜索树实现查找,插入,删除,遍历,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

由于最近想要阅读下JDK1.8中HashMap的具体实现,但是由于HashMap的实现中用到了红黑树,所以我觉得有必要先复习下红黑树的相关知识,所以写下这篇随笔备忘,有不对的地方请指出~

学习红黑树,我觉得有必要从二叉搜索树开始学起,本篇随笔就主要介绍Java实现二叉搜索树的查找,插入,删除,遍历等内容。

<强>二叉搜索树需满足以下四个条件:

若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

任意节点的左、右子树也分别为二叉查找树;

没有键值相等的节点。

<强>二叉搜索树举例:

 Java如何利用二叉搜索树实现查找,插入,删除,遍历

接下来将基于图一介绍二叉搜索树相关操作。

首先,应先有一个节点对象相关的类,命名为节点。

类节点
  int的关键;
  int值;
  节点leftChild;
  节点rightChild;
  公共节点(int, int值){
  这一点。键=键;
  这一点。值=https://www.yisu.com/zixun/value;
  }
  公共空间displayNode () {
  }
  }

节点类中包含关键值,用于确定节点在树中相应位置,价值值代表要存储的内容,还含有指向左右孩子节点的两个引用。

接下来看下搜索树相应的类:

类树
  根节点;//保存树的根
  找到公共节点(int键){//查找指定节点
  }
  公共空间插入(int, int值){//插入节点
  }
  公共逻辑删除(int键){//删除指定节点
  }
  私人getDirectPostNode节点(节点delNode){//得到待删除节点的直接后继节点
  }
  公共空间预订(节点rootNode){//先序遍历树
  }
  公共空间”(节点rootNode){//中序遍历树
  }
  公共空间后缀次序(节点rootNode){//后序遍历树
  }
  }

类中表示树的框架,包含查找,插入,遍历,删除相应方法,其中删除节点操作最为复杂,接下来一一介绍。

<强>一、查找某个节点

由于二叉搜索树定义上的特殊性,只需根据输入的键值从根开始进行比较,若小于根的键值,则与根的左子树比较,大于根的键值与根的右子树比较,以此类推,找到则返回相应节点,否则返回零。

公共空隙插入(int, int值){
  如果(root==null) {
  根=新节点(关键字,值);
  返回;
  }
  节点currentNode=根;
  节点parentNode=根;
  布尔isLeftChild=true;
  而(currentNode !=null) {
  parentNode=currentNode;
  如果(关键& lt;currentNode.key) {
  currentNode=currentNode.leftChild;
  isLeftChild=true;
  其他}{
  currentNode=currentNode.rightChild;
  isLeftChild=false;
  }
  }
  节点newNode=新节点(关键字,值);
  如果(isLeftChild) {
  parentNode。leftChild=newNode;
  其他}{
  parentNode。rightChild=newNode;
  }
  }

<强>三,遍历二叉搜索树

遍历操作与遍历普通二叉树操作完全相同,不赘述。

Java如何利用二叉搜索树实现查找,插入,删除,遍历