在Java中创建通用二进制搜索树
我正试图用Java创建这棵树,但我被卡住了,不知道如何继续。以下是我目前掌握的代码:在Java中创建通用二进制搜索树,java,data-structures,tree,nodes,Java,Data Structures,Tree,Nodes,我正试图用Java创建这棵树,但我被卡住了,不知道如何继续。以下是我目前掌握的代码: public class BTNode<E> { private E data; private BTNode<E> left; private BTNode<E> right; public BTNode(E newData, BTNode<E> newLeft, BTNode<E> newRight) { setData(newData)
public class BTNode<E>
{
private E data;
private BTNode<E> left;
private BTNode<E> right;
public BTNode(E newData, BTNode<E> newLeft, BTNode<E> newRight)
{
setData(newData);
setLeft(newLeft);
setRight(newRight);
}
public E getData()
{
return data;
}
public BTNode<E> getLeft()
{
return left;
}
public BTNode<E> getRight()
{
return right;
}
public void inorderPrint()
{
if(left != null)
left.inorderPrint();
System.out.println(data);
if(right != null)
right.inorderPrint();
}
public void setData(E newData)
{
data = newData;
}
public void setLeft(BTNode<E> newLeft)
{
left = newLeft;
}
public void setRight(BTNode<E> newRight)
{
right = newRight;
}
公共类BTNode
{
私人电子数据;
私有BTNode左;
私有节点权;
公共BTNode(E newData、BTNode newLeft、BTNode newRight)
{
setData(newData);
setLeft(newLeft);
setRight(newRight);
}
公共E getData()
{
返回数据;
}
公共BTNode getLeft()
{
左转;
}
公共BTNode getRight()
{
返还权;
}
OrderPrint()中的公共无效
{
if(左!=null)
左。inorderPrint();
系统输出打印项次(数据);
if(右!=null)
对。inorderPrint();
}
公共void setData(E newData)
{
数据=新数据;
}
公共void setLeft(BTNode newLeft)
{
左=新左;
}
公共无效设置权限(BTNode newRight)
{
右=新右;
}
}
公共类树
{
私有节点根;
私有内部多节点;
公树()
{
}
公共无效添加(E元素)
{
BTNode newLeft=null;
BTNode newRight=null;
if(root==null)
根=新的BTNode(元素、新左、新右);
其他的
{
BTNode cursor=新的BTNode(元素,newLeft,newRight);
游标=根;
布尔完成=假;
while(完成=错误)
{
if(element.compareTo(cursor.getData())方法
public void setLeft(BTNode<E> newLeft) {
left = newLeft;
}
public void setRight(BTNode<E> newRight) {
right = newRight;
}
就编译器而言,element
是E
类型,E
是扩展Comparable
的类型。类型不匹配。将元素
包装在BTNode
对象中并传递该对象。您的意思是:cursor.setLeft((BTNode)element);@user No,这称为casting。我的意思是创建一个新的BTNode
对象,并将元素作为其数据提供给它。BTNode left=新的BTNode(元素,null,null)我仍然没有跟上。我正在尝试为左侧创建一个新节点,而不是数据。sorry@user2985986您的add
方法有很多问题。首先,比较运算符是=
而不是=
。其次,您立即重新分配先前存储要添加的节点的游标
变量添加
public void setLeft(BTNode<E> newLeft) {
left = newLeft;
}
public void setRight(BTNode<E> newRight) {
right = newRight;
}
cursor.setLeft(element);