Java 如何建立二叉树

Java 如何建立二叉树,java,linked-list,Java,Linked List,它有用吗? 决定在顺序数组中切换678和1789,这使得1789位于678的左侧,0位于678的右侧。在下面的代码中 public static BinaryTreeNode buildTree(int inOrder[], int preOrder[], int preIndex ) { if (inOrder.length > 1) { int inIndex = 0; for (int i = 0; i < inOrder.l

它有用吗? 决定在顺序数组中切换678和1789,这使得1789位于678的左侧,0位于678的右侧。在下面的代码中

public static BinaryTreeNode buildTree(int inOrder[], int preOrder[], int 
preIndex )
{               
if (inOrder.length > 1)  
{
    int inIndex = 0;
    for (int i = 0; i < inOrder.length; i++)
    {
        if (preOrder[preIndex] == inOrder[i])
        {
            inIndex = i ;
            break;                  
        }
    }

    if (inIndex > 0)
    {          
        BinaryTreeNode node = new BinaryTreeNode(inOrder[inIndex]);

        if (preIndex < preOrder.length - 1 )
        {
        node.setLeft(buildTree(leftArray(inOrder, inIndex), preOrder, preIndex + 1));
        node.setRight(buildTree(rightArray(inOrder, inIndex), preOrder, inIndex + 1));  
        }

        return node;
    }           
}       
return new BinaryTreeNode(inOrder[0]);
publicstaticbinarytreenode构建树(int-inOrder[],int-preOrder[],int
预索引)
{               
如果(顺序长度>1)
{
int-inIndex=0;
for(int i=0;i0)
{          
BinaryTreeNode=新的BinaryTreeNode(索引[inIndex]);
if(预索引<预订单长度-1)
{
setLeft(buildTree(leftArray(inOrder,inIndex),preOrder,preIndex+1));
setRight(buildTree(rightArray(inOrder,inIndex),preOrder,inIndex+1));
}
返回节点;
}           
}       
返回新的二进制树节点(顺序[0]);

}

此代码用于添加一个
节点
。您正在使用实际的
nextNode
创建一个新节点,并将其设置为
current.nextNode
值。这是添加一个节点

 Node<T> current = firstNode;
 for (int i = 1; i < pos; i++)
      current = current.nextNode;
 Node<T> temp = new Node<T>(value, current.nextNode);
current.nextNode = temp;

removeFrom方法的代码应如下所示:

public int removeFrom(int value,int pos) {
        boolean exists = false;
        if(0 < pos && pos <= this.size){

        Node current = start.next;
        Node previous = start;
        Node deleted =null;
        for(; current!=null; current=current.next) {
            if(current.value == value) {
                 deleted = current;
                previous.next = current.next;
                current = previous;
                size--;
                exists = true;
                return deleted.value;
            } else {
                previous = previous.next;
            }
        }
        if(!exists)
            System.out.println("the value not exist");
        }
        else
            System.out.println("not valid position");

        return -1;
    }
public int-removfrom(int-value,int-pos){
布尔存在=假;

如果(0
),以创建removeFrom方法,从列表的位置删除元素。还必须返回元素removed.该方法必须首先确保pos是有效的索引。如果pos值无效,函数应抛出InvalidIndexException。没有完整类的上下文,我们无法帮助您。@Joe正如Tobias所说:需要(更)完整的上下文。另外:不要将该信息放在注释中,请将其添加到问题中。
public int removeFrom(int value,int pos) {
        boolean exists = false;
        if(0 < pos && pos <= this.size){

        Node current = start.next;
        Node previous = start;
        Node deleted =null;
        for(; current!=null; current=current.next) {
            if(current.value == value) {
                 deleted = current;
                previous.next = current.next;
                current = previous;
                size--;
                exists = true;
                return deleted.value;
            } else {
                previous = previous.next;
            }
        }
        if(!exists)
            System.out.println("the value not exist");
        }
        else
            System.out.println("not valid position");

        return -1;
    }