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メソッドを呼び出すか、オブジェクトのコンパレータを作成してそれを使用してツリーをソートすることです。

だから代わりに

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 に答える