1

我需要一些有关二叉搜索树的帮助。我清楚地知道如何将整数添加到二叉搜索树,但是如何将整个对象添加到像那里的二叉搜索树?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 

有任何想法吗?谢谢

4

1 回答 1

2

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

所以而不是

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 ????
于 2012-12-05T00:38:48.060 回答