介绍
这篇文章将为大家详细讲解有关Java如何利用二叉搜索树实现查找,插入,删除,遍历,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
由于最近想要阅读下JDK1.8中HashMap的具体实现,但是由于HashMap的实现中用到了红黑树,所以我觉得有必要先复习下红黑树的相关知识,所以写下这篇随笔备忘,有不对的地方请指出~
学习红黑树,我觉得有必要从二叉搜索树开始学起,本篇随笔就主要介绍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如何利用二叉搜索树实现查找,插入,删除,遍历