java - Java中向BST添加对象

标签 java binary-search-tree

我需要一些关于二叉搜索树的帮助。我清楚地知道如何将整数添加到二叉搜索树中,但是如何将整个对象添加到像那里一样的二叉搜索树中? http://postimage.org/image/6y0hor0gh/

假设我想使用 AGE 作为键值,那么在创建节点时如何比较对象与对象呢?为了将整数添加到二叉搜索树,我使用了

//Tree.java

public class Tree 
{   
    // The root node of the tree
    // initialised here to null
    private TreeNode root; 

    private TreeNode insert(TreeNode tree, int d)
    {
        if(tree == null) return new TreeNode(d);
        else if   (d < tree.data) tree.left  = insert(tree.left, d);
           else if(d > tree.data) tree.right = insert(tree.right,d);
       // ignore duplicate items
       return tree;
    } // end private TreeNode insert(TreeNode tree, int d)

    public void insert(int d)
    {   root = insert(root,d);  }


---------------------------------------------
//TreeNode.java

class TreeNode 
{
    protected TreeNode left;   // left node
    protected int data;        // data item
    protected TreeNode right;  // right node

   // Constructor
   TreeNode(int d) 
    {
        data = d; left = right = null;
    }
} // end of class TreeNode 

有什么想法吗?谢谢

最佳答案

看看树形图。您想要做的就是使您的对象具有可比性并调用compareTo 方法,或者为您的对象创建一个比较器并使用它对树进行排序。

所以而不是

else if   (d < tree.data) tree.left  = insert(tree.left, d);
       else if(d > tree.data) tree.right = insert(tree.right,d);

你会有

else if (d.compareTo(tree.data) < 0 ){
    tree.left  = insert(tree.left, d);
} else if (d.compareTo(tree.data) > 0){
    tree.right = insert(tree.right,d);
}
// what happens when they are the same ????

关于java - Java中向BST添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714395/

相关文章:

java - 如何改变窗口的颜色

java - Spring webapp加载插件: ClassNotFoundException

c++ - 检查二叉树是否为二叉搜索树或不起作用的函数

c++ - 二叉搜索树(BST)返回左 child 被视为函数,不明白

java - 不支持旧式 JPEG-in-TIFF 数据的解码

Java - 从列表中显示 n 组记录?

java - 将 LocalDateTime 设置为使用 hibernate 4.3.10 自动生成

c - 在二叉树中插入一个节点 - 将迭代转换为递归

c++ - 向树添加多个节点 C++

algorithm - 如何根据二叉搜索树(BST)中的后继者计算 parent