gpt4 book ai didi

java - 树、节点、树类型

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


我想创建一棵树来检测插入是否是字符类型的对象,它将比较每个对象并决定在哪里插入[右或左],(我知道它可以通过ascii表中的位置检测),并且如果插入是 int 的对象,它将执行相同的操作。
我的问题:
1.我需要创建树,同时设置一个比较器(例如,如果它是一个字符树,它将是一个检查字符的 Chars_comperator ,并且他实现了比较器(java的)。?2.我的代码现在仅适用于int。因为我将对象转换为字符串,然后转换为 int,毕竟我比较并决定插入位置,这就是我需要这样做的方式?或者还有另一种方法可以处理所有类型的对象?这是我的代码以及我如何创建树,

树类

public class tree {

bNode root;
public tree() {
this.root = null;
}
public boolean isEmpty(){
return root==null;
}
public void insert(Object data)
{
if(isEmpty())
this.root = new bNode(data);
else
this.root.insert(data);

}
}


bNode类

public class bNode {
protected Object data;
protected bNode left;
protected bNode right;


public bNode(Object data) {
this.data = data;
this.left = null;
this.right = null;
}

public void insert(Object data){

if(Integer.parseInt(data.toString())<Integer.parseInt(this.data.toString())){
if(this.left==null)
this.left = new bNode(data);
else
this.left.insert(data);

}
else{
if(this.right==null)
this.right = new bNode(data);
else
this.right.insert(data);



}
}

主类

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
tree x = new tree();
char a = 'G';
x.insert(a);
x.insert(60);
x.insert(40);
x.insert(30);
x.insert(59);
x.insert(61);
x.root.printTree(x.root);


}

}
谢谢!

最佳答案

您可以传递 Comparable 而不是传递对象在insert() 。Integer、String 等标准类型已经实现了 Conparable 接口(interface)。

而不是使用 if (a <b )你打电话

compareTo(a,b);

参见Comparable的java文档。

如果出于任何原因,您想继续通过 Objectinsert() ,您也可以通过不使用 toString 来解决这个问题,而是通过检查对象的类,然后进行强制转换:

if (object instanceof Integer) {
int val = ((Integer) object).intValue();
// now compare
} else if (object instance of String) {
String val .....
// use val.compareTo()
}

关于java - 树、节点、树类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799155/

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