package com.pb.datastructure.find;
/**
*二叉查找树查找算法
*
* @author Administrator
*/
public class FindSortTree {
private Node root;// 根节点
/**
* 增加节点
*
* @param data
*/
public void add(int data) {
if (root == null) {
this.root = new Node(data, null, null);
} else {
addTree(root, data);
}
}
/**
* 增加节点(根节点不为空)
*/
public void addTree(Node root, int data) {
if (root.data > data) {
if (root.left == null) {
root.left = new Node(data, null, null);// 当前节点左子树为空,直接插入左子树
} else {
addTree(root.left, data);// 递归调用左子树
}
} else {
if (root.right == null) {
root.right = new Node(data, null, null);// 当前节点右子树为空,直接插入右子树
} else {
addTree(root.right, data);// 递归调用右子树
}
}
}
[color=darkred]/**
* 查找 @ id
*/
public Node searchNode(int id) {
Node n = null;
Node cur = root;
while (true) {
if (cur == null) {
break;
}
if (cur.data == id) {
n = cur;
break;
}
if (id > cur.data) {
cur = cur.right;// 如果给定值大于当前节点值的关键字,进入右子树继续循环
} else {
cur = cur.left;// 如果给定值小于当前节点值的关键字,进入左子树继续循环
}
}
return n;
}
[/color]
/**
* @param args
*/
public static void main(String[] args) {
FindSortTree tree = new FindSortTree();
tree.add(3);
tree.add(12);
tree.add(7);
tree.add(42);
tree.add(23);
tree.add(37);
System.out.println("查找节点为 23");
if (tree.searchNode(23) == null) {
System.out.println("查找失败");
} else {
System.out.println("查找成功!查找到的节点为:" + tree.searchNode(23).data);
}
}
/**
* Node 类
*/
public class Node {
int data;// 当前节点的关键字
Node left;// 当前结点的左节点
Node right;// 当前节点右节点
public Node(int data, Node left, Node right) {
this.data = data;
this.left = left;
this.right = right;
}
}
}
运行结果:
查找节点为 23
查找成功!查找到的节点为:23
分享到:
相关推荐
二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,它的每个节点都包含一个键(key)、一个关联的值、一个指向左子树的引用和一个指向右子树的引用。在二叉查找树中,对于任意节点,其左子树中的...
二叉查找树(Binary Search Tree, BST)是一种基础但非常重要的数据结构,它在计算机科学中扮演着核心角色,尤其是在算法和数据结构的学习中。二叉查找树的主要特性是每个节点的左子树只包含小于该节点的元素,右子...
二叉查找树(Binary Search Tree, BST)是一种特殊的数据结构,它在计算机科学中用于高效地存储和检索数据。在二叉查找树中,每个节点包含一个键(key)、一个关联的值、一个指向左子节点的引用以及一个指向右子节点...
二叉查找树(Binary Search Tree,BST)是一种特殊类型的二叉树,它的每个节点都包含一个键(key)、一个关联的值、一个指向...在实际应用中,二叉查找树常被用于数据库索引、文件系统的目录结构和各种类型的搜索算法。
用C++实现的最优二叉查找树,简单,明了,是数据结构里经典必学算法,初学者适用
一旦所有子树的成本都被计算出来,算法便可以通过递归地调用`constructOptimalBST`函数,根据动态规划过程中记录的最优根节点选择,构建出整个最优二叉查找树的结构。在构建过程中,函数会打印出树的结构信息,包括...
最优二叉查找树(Optimal Binary Search Tree, OBST)是一种高效的检索数据结构,它根据键值分布的不同,自适应地调整树的形态以达到最小化查找时间的目的。在计算机科学中,动态规划(Dynamic Programming, DP)是...
1、 定义二叉查找树的类。 2、 实验验证如下算法的正确性、各种功能及指标: 1)实现二叉查找树结构; 2) 实现二叉查找树的查找、插入和删除等算法;
二叉排序树(Binary Search Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。二叉排序树的主要特点是:对于任意节点,其左子树中的所有...
编码通常指的是将一个有序数组转换为一个二叉查找树,而解码则是将二叉查找树转换回有序数组。在编码过程中,可以采用不同的策略,比如中序遍历一棵空树,然后依次插入数组中的每个元素;或者更高效地,采用...
如果是源代码,它可能用C++、Java或Python等编程语言编写,展示了二叉查找树的插入、删除和查找等基本操作的算法实现。如果是数据文件,它可能存储了预构建的二叉查找树,用户可以直接在程序中查看和操作这个树。 ...
二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树数据...理解并熟练掌握二叉查找树的原理和操作,对学习和实践算法、提高程序性能至关重要。通过不断的练习和实践,你可以更好地运用这些知识来解决实际问题。
递归二叉查找算法是二叉查找的一种实现方式,它利用了函数的递归调用。在递归版本中,查找过程被封装在一个函数中,该函数接受当前节点作为参数,并根据目标值与当前节点值的关系决定下一步的动作。递归版本通常更...
二叉查找树是一种非常重要的数据结构,在计算机科学领域有着广泛的应用,如在数据库索引、文件系统以及搜索算法等方面。 #### 二、二叉查找树定义 二叉查找树(Binary Search Tree)是一种特殊的二叉树,它满足以下...
二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种性质使得...
这个实验不仅加深了对二叉查找树的理解,还锻炼了实际编程实现查找算法的能力,是学习数据结构与算法过程中非常有价值的一环。通过实验,学生能够更好地掌握二叉查找树的插入操作、遍历方法以及验证树的正确性,为...
在VC++环境下实现二叉查找树,通常会涉及C++的类封装、指针操作以及递归算法。 首先,我们需要定义一个名为`BstTree`的类,这个类将包含二叉查找树的基本属性和方法。类的定义可能如下: ```cpp class BstTree { ...
运用c语言,贪心算法构造最优二叉查找树。