gpt4 book ai didi

java - Java中同时输出节点、左子节点和右子节点

转载 作者:行者123 更新时间:2023-12-02 05:22:34 27 4
gpt4 key购买 nike

我正在实现一个字典二叉树,我需要输出为

 curent node data ; left child data ; right child data

例如,如果我有以下输入:

banana apple curtain pumpkin egg

遍历二叉树,我需要输出为:

banana ; apple ; curtain
apple ; -1 ; -1
curtain ; -1 ; pumpkin
pumpkin ; egg ; -1
egg ; -1 ; -1

如果左右 child 为空,则输出“-1”。

这是我的尝试:

 public void insert(String newData){
root = insert2(newData, root);

}

public BTNode insert2(String s, BTNode n){
if(n == null){
return new BTNode(s);
}

if(s.compareTo(n.data) < 0){
n.left = insert2(s, n.left);
if(n.right!=null)
System.out.println(n.data+" "+n.left.data+" "+n.right.data);
else System.out.println(n.data+" "+n.left.data +" "+ -1);




}else if(s.compareTo(n.data) > 0){
n.right = insert2(s, n.right);
if(n.left!=null)
System.out.println(n.data+" "+n.left.data+" "+n.right.data);
else System.out.println(n.data+" "+ -1 +" "+n.right.data);

}
return n;


}

我尝试的输出是:

banana apple -1
banana apple curtain
curtain -1 pumpkin
banana apple curtain
pumpkin egg -1
curtain -1 pumpkin
banana apple curtain

谢谢。

最佳答案

我认为您误解了该任务:当您遍历完全构建的二叉树时需要完成打印。由于您在树构建期间尝试打印,因此某些数据在您需要时无法使用。特别是,您不能在第一行打印 "banana""curtain",因为此时您拥有的只是 "apple" .

要解决此问题,请从 insert2 方法中删除所有 println 调用,并实现

void printTree(BTNode node)

方法,并在树构建完成后调用它。 printTree 实现很简单 - 您打印一个字符串,其中包含当前节点及其两个子节点的布局,然后遍历左子树,然后遍历其右子树(如果有)。

关于java - Java中同时输出节点、左子节点和右子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26382642/

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