`

二叉查找树之插入算法

阅读更多
package com.pb.datastructure.find;

/**
 * 二叉查找树之插入算法
 * @author Administrator
 */
public class BinarySortTree {
	private static BinarySortTree tree = new BinarySortTree();
	private Node root;//根結點
	public void add(int data){
		if(null==root){
			root=new Node(data,null,null);//如果根结点为空,直接插入根结点
		}else{
			addTree(root,data);
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		createTree();//创建二叉查找树
		System.out.println("插入节点17");
		tree.add(17);
		tree.show();

	}
	/**
	 * 插入节点
	 * @param root
	 * @param data
	 */
	private 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);
			}
		}
	}
	/**
	 * 控制台显示
	 */
	public void show(){
		System.out.println("中序遍历结果为:");
		showTree(root);
	}
	/**
	 * 显示二叉树
	 * @author Administrator
	 */
	public void showTree(Node node){
		if(node.left!=null){
			showTree(node.left);
		}
		System.out.println(node.data+" ");
		if(node.right!=null){
			showTree(node.right);
		}
	}
/**
 * 构建二序查找树
 * @author Administrator
 *
 */
	public static void createTree(){
		tree.add(15);
		tree.add(12);
		tree.add(9);
		tree.add(14);
		tree.add(13);
		tree.add(19);
		tree.add(18);
		tree.add(22);
		tree.add(23);
		
	}
	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;
		}
	}

}
分享到:
评论

相关推荐

    二叉排序树插入

    二叉排序树插入算法 二叉排序树插入是指在二叉排序树中插入新的数据元素的过程。...二叉排序树插入算法是二叉排序树操作的基础,它能够确保树的结构满足二叉排序树的性质,并且能够快速地查找和插入新的数据元素。

    实现二叉排序树的各种算法

    二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或二叉搜索树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。二叉排序树的主要特性是:对于任意节点,其左子树中的所有...

    二叉查找树C++实现

    二叉查找树(Binary Search Tree, BST)是一种基础但非常重要的数据结构,它在计算机科学中扮演着核心角色,尤其是在算法和数据结构的学习中。二叉查找树的主要特性是每个节点的左子树只包含小于该节点的元素,右子...

    二叉查找树的插入、删除、遍历和查找等C++实现

    二叉查找树的插入、删除、遍历和查找等操作的C++实现,二叉查找树采用泛型结构

    二叉查找树 减治法——C++代码

    在二叉查找树的应用中,减治法通常用于递归地处理树的结构,例如在搜索、插入和删除操作中,我们首先比较目标值与当前节点的键,然后根据比较结果决定是在左子树还是右子树继续操作。 在C++中实现二叉查找树,一般...

    二叉查找树练习

    当读取文件时,逐行扫描并分割出单词,然后利用二叉查找树的特性进行插入操作:如果单词小于当前节点的单词,就递归地向左子树插入;反之,向右子树插入。如果单词已经存在于树中,则无需再次插入。 在`findwords`...

    二叉排序树的建立、插入、查找和删除

    代码里有二叉排序树插入操作递归算法,二叉排序树插入操作非递归算法,二叉排序树删除操作,创建二叉排序树,二叉排序树查找递归算法,二叉排序树查找非递归算法

    C++二叉搜索树的插入和删除例子

    这种特性使得二叉搜索树在查找、插入和删除操作上具有较高的效率。 `bstree.cpp`和`bstree.h`这两个文件很可能是实现二叉搜索树插入和删除操作的源代码。在C++中,通常我们会定义一个名为`BSTNode`的结构体或类来...

    二叉查找树实现简单的信息检索

    二叉查找树(Binary Search Tree,BST)是一种特殊类型的二叉树,它的每个节点都包含一个键(key)、一个关联的值、一个指向...在实际应用中,二叉查找树常被用于数据库索引、文件系统的目录结构和各种类型的搜索算法。

    最优二叉查找树

    与普通二叉查找树不同,最优二叉查找树的结构不是由插入顺序决定的,而是通过考虑所有可能的访问频率来构建,以最小化查找操作的总成本。 ### 1. 基本概念 - **二叉查找树**(Binary Search Tree,简称BST)是一种...

    二叉查找树的实现

    1、 定义二叉查找树的类。 2、 实验验证如下算法的正确性、各种功能及指标: 1)实现二叉查找树结构; 2) 实现二叉查找树的查找、插入和删除等算法;

    采用二叉链式结构做存储结构的二叉排序树建立和查找算法

    二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种性质使得...

    课程设计——二叉查找树

    如果是源代码,它可能用C++、Java或Python等编程语言编写,展示了二叉查找树的插入、删除和查找等基本操作的算法实现。如果是数据文件,它可能存储了预构建的二叉查找树,用户可以直接在程序中查看和操作这个树。 ...

    最优二叉查找树 动态规划法.cpp.rar

    最优二叉查找树(Optimal Binary Search Tree, OBST)是一种高效的检索数据结构,它根据键值分布的不同,自适应地调整树的形态以达到最小化查找时间的目的。在计算机科学中,动态规划(Dynamic Programming, DP)是...

    二叉查找树

    二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树数据...理解并熟练掌握二叉查找树的原理和操作,对学习和实践算法、提高程序性能至关重要。通过不断的练习和实践,你可以更好地运用这些知识来解决实际问题。

    二叉排序树查找算法

    二叉排序树(Binary Search Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。二叉排序树的主要特点是:对于任意节点,其左子树中的所有...

    第六课_二分查找与二叉查找树.pdf

    例如,在二叉查找树中插入一个新节点,可以通过二分查找先找到插入位置,然后再进行节点的添加;在二叉查找树中查找一个值,也可以利用二分查找的思想,递归地在树的左右子树中进行查找。 总而言之,二分查找与二叉...

    数据结构___二叉排序树

    一、实验目的 (1)理解动态查找表的动态生成过程; (2)任意给出一组数(不少于10个),建立对应二叉排序树;...(2)实现二叉排序树的插入算法与查找算法,并建立二叉排序树; (3)进行数据查找和建树过程的比较。

Global site tag (gtag.js) - Google Analytics