gpt4 book ai didi

java - Java中向BST添加对象

转载 作者:行者123 更新时间:2023-12-01 15:00:33 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com