Java 如何建立二叉树
它有用吗? 决定在顺序数组中切换678和1789,这使得1789位于678的左侧,0位于678的右侧。在下面的代码中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
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;
}