JAVA向,二叉查找树

满足二叉查找树的存储规则。

类似折半查找:


import javax.management.remote.rmi._RMIConnectionImpl_Tie;

/**
* Created by John on 14-5-22.
*/
public class IntTree {
private static class IntTreeNode
{
private int data;
private IntTreeNode leftLink;
private IntTreeNode rightLink;

public IntTreeNode(int newData,IntTreeNode newLeftLink,IntTreeNode newRightLink)
{
data =newData;
leftLink=newLeftLink;
rightLink=newRightLink;
}
}
private IntTreeNode root;
public IntTree()
{
root=null;
}
public void add(int item)
{
root=insertInSubtree(item,root);
}
public boolean contains(int item)
{
return isInSubtree(item,root);
}
public void showElements()
{
showElementsInSubtree(root);
}
private static boolean isInSubtree(int item,IntTreeNode subTreeRoot)
{
if(subTreeRoot==null)
return new IntTreeNode(item,null,null);
else if(item <subTreeRoot.data)
{
subTreeRoot.leftLink=insertInSubtree(item, subTreeRoot.leftLink);
return subTreeRoot;
}
else
{
subTreeRoot.rightLink=insertInSubtree(item,subTreeRoot.rightLink);
return subTreeRoot;
}
}
private static boolean isInSubtree(int item,IntTreeNode subTreeRoot)
{
if(subTreeRoot==null)
return false;
else if(subTreeRoot.data==item)
return true;
else if(item<subTreeRoot.data)
return isInSubtree(item,subTreeRoot.leftLink);
else
return isInSubtree(item,subTreeRoot.rightLink);
}
private static void showElementsInSubtree(IntTreeNode subTreeRoot)
{
if(subTreeRoot!=null)
{
showElementsInSubtree(subTreeRoot.leftLink);
System.out.print(subTreeRoot.data+" ");
showElementsInSubtree(subTreeRoot.rightLink);
}
}
}

JAVA向,二叉查找树

时间: 2024-10-08 10:28:57

JAVA向,二叉查找树的相关文章

Java数据结构-二叉查找树续以及平衡二叉查找树

??前面一篇文章讲到了二叉查找树的实现,其中的插入操作是使用非递归方法实现的,这里再增加一种递归实现插入的操作,Java代码如下,建议增加到前一篇文章对应的FOBinarySearchTree.java中: /** * @TODO 二叉排序树插入元素(递归方法) * @param e 需要插入的元素 * @return true or false */ public boolean insert(E e){ insert(root,e); return true; } /** * @TODO 二

java实现二叉查找树

/** * @author zyj8170  2011-2-13 * * 此程序实现一个二叉查找树的功能,可以进行动态插入.删除关键字: * 查询给定关键字.最小关键字.最大关键字:转换为有序列表(用于排序) * * */ import java.util.ArrayList; import java.util.List; public class BinarySearchTree { // 树的根结点 private TreeNode root = null; // 遍历结点列表 privat

算法(第四版)学习笔记之java实现二叉查找树

二叉查找树:是一棵二叉树,其中每个结点都含有一个键以及相关联的一个值且每个结点的键都大于其左子树中的任意结点的键而小于其右子树中的任意结点的键. 二叉查找树的每个方法功能原理都在代码中有详细的解释,下面来看代码: /** * * @author seabear * 二叉查找树 * @param <Key> * @param <Value> */ public class BTS<Key extends Comparable<Key>,Value> { //定

JAVA数据结构--二叉查找树

二叉查找树定义 二叉查找树(英语:Binary Search Tree),也称二叉搜索树.有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值: 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值: 任意节点的左.右子树也分别为二叉查找树: 没有键值相等的节点. 二叉查找树相比于其他数据结构的优势在于查找.插入

用Java实现二叉查找树

二叉查找树的实现 1. 原理 二叉查找树,又称为二叉排序树.二叉搜索树.对于树中每一个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项.二叉查找树的平均深度为O(log N),搜索元素的时间复杂度也是O(log N).是两种库集合类TreeSet.TreeMap实现的基础. 2. public API void makeEmpty( )     --> 置空boolean isEmpty( )     --> 判空AnyType findMin( )     -

Java实现数据结构之二叉查找树

一.综述 二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值: (3)左.右子树也分别为二叉排序树: (4)没有键值相等的节点. 基于二叉查找树树的二叉查找算法具有很高的效率O(logn),是一种很适合查找的数据结构,但是它也有确定,比如不够平衡.因此有改进后的平衡二叉查找树(AVL),这个下一篇再讲. 二.Java实现二叉查找树 三.调用检验 三.结果输出

算法导论读书笔记(14) - 二叉查找树的具体实现

算法导论读书笔记(14) - 二叉查找树的具体实现 目录 二叉查找树的简单Java实现 二叉查找树的简单Java实现 /** * 二叉查找树 * 部分代码参考自TreeMap的源码 */ public class BinarySearchTree<T> { protected TreeNode<T> root = null; private final Comparator<? super T> comparator; private int size = 0; pub

数据结构之二叉查找树(BST)-(六)

二叉查找树在数据结构中也经常会被用到.所谓二叉查找树就是从根节点开始,左边的节点比右边的节点小.显然BST的前序遍历就是一个从小到大的有序数组. JAVA构建二叉查找树: // 构建一颗二叉查找树 /*原理: * 下一个数据和根节点比较,比根大放在根的右边,然后再跟节点的右孩子节点比较 * 比根节点小,则放在根节点的左侧, * 如果等于根,那么不操作 * 注意:容易出现两种极端情形,该树全是左节点,或者全是右节点,那么平均查找时间依然是o(n), * 这两种情形都不是我们想要看到的,因为BST的

二叉树--二叉搜索树

一直对AVL这个英文缩写比较困惑,原来一直以为是平衡二叉树的首字母缩写,但是又想不明白,哈!前段时间才明白原来是种这课树的三个人的名字的首字母的,哎,生活处处有惊喜,无知不可怕,现在我也知道了.废话不多说,下面我们说说,树形结构中的那些平衡二叉树. 二叉排序树 树的遍历顺序有3种,二叉排序树,顾名思义,就是一颗有序的二叉树,是一种按照中序遍历树中节点,而输出有序队列的一种树形结构,一种特殊的树形结构. 定义 对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为

红黑树 实现

转发skywang12345 概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C++/Java实现,原理一样,择其一了解即可. 目录1. 红黑树的介绍2. 红黑树的Java实现(代码说明)3. 红黑树的Java实现(完整源码)4. 红黑树的Java测试程序 转载请注明出处: 更多内容:数据结构与算法系列 目录 (01) 红黑树(一)之 原理和算法详细