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