在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)

我正试图用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);
    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);