gpt4 book ai didi

Java 二叉树。打印 InOrder 遍历

转载 作者:行者123 更新时间:2023-12-02 08:33:16 26 4
gpt4 key购买 nike

我在打印二叉树的有序遍历时遇到一些问题。即使在树中插入许多项目后,它也只打印 3 个项目。

public class BinaryTree {

private TreeNode root;
private int size;

public BinaryTree(){
this.size = 0;
}

public boolean insert(TreeNode node){

if( root == null)
root = node;

else{
TreeNode parent = null;
TreeNode current = root;
while( current != null){
if( node.getData().getValue().compareTo(current.getData().getValue()) <0){
parent = current;
current = current.getLeft();
}
else if( node.getData().getValue().compareTo(current.getData().getValue()) >0){
parent = current;
current = current.getRight();
}
else
return false;

if(node.getData().getValue().compareTo(parent.getData().getValue()) < 0)
parent.setLeft(node);
else
parent.setRight(node);
}
}
size++;
return true;
}


/**
*
*/
public void inOrder(){
inOrder(root);
}

private void inOrder(TreeNode root){
if( root.getLeft() !=null)
this.inOrder(root.getLeft());
System.out.println(root.getData().getValue());

if( root.getRight() != null)
this.inOrder(root.getRight());
}



}

最佳答案

您似乎在插入时没有正确遍历树,以找到新节点的正确位置。现在,您总是在根的一个子节点处插入,因为插入代码位于 while 循环内 - 它应该在之后:

public boolean insert(TreeNode node){

if( root == null)
root = node;

else{
TreeNode parent = null;
TreeNode current = root;
while( current != null){
if( node.getData().getValue().compareTo(current.getData().getValue()) <0){
parent = current;
current = current.getLeft();
}
else if( node.getData().getValue().compareTo(current.getData().getValue()) >0){
parent = current;
current = current.getRight();
}
else
return false;
}
if(node.getData().getValue().compareTo(parent.getData().getValue()) < 0)
parent.setLeft(node);
else
parent.setRight(node);
}

size++;
return true;
}

关于Java 二叉树。打印 InOrder 遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706181/

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