gpt4 book ai didi

java - 这段代码中的中序遍历有什么问题?

转载 作者:行者123 更新时间:2023-12-02 05:49:59 24 4
gpt4 key购买 nike

Else 条件也与 inOrder(Node node) 方法中的 if 条件一起运行

我实际上使用给定的代码在 BST 中添加了节点,现在我尝试使用中序遍历来检索它们,但输出不是按顺序方式,因为在每个 If 之后执行 Else 条件.

import java.util.*;
import java.io.*;
import java.lang.*;

class Node{
int data; Node left; Node right;
public Node(int data) {
this.data = data;
left = null;
right = null;

}
}
public class insert_tree {
Node root;
public void addNode(int value) {
root = add(root, value);
}
private Node add(Node node, int value) {
if(node == null) {
node = new Node(value);
return node;
}
if(value == node.data) {
node.left = add(node.left, value);
}
else if(value < node.data) {
node.left = add(node.left, value);
}
else {
node.right = add(node.right, value);
}

return node;
}

private void inOrder(Node node) {
if(node != null) {
inOrder(node.left);
System.out.print(node.data + " ");
inOrder(node.right);
}
else {
System.out.print("*" + " ");
}
}
public void inorder() {
inOrder(root);
}
public static void main(String args[]) {
insert_tree obj = new insert_tree();
obj.addNode(20);
obj.addNode(14);
obj.addNode(25);
obj.addNode(10);
obj.addNode(16);
obj.addNode(25);
obj.addNode(21);
obj.addNode(30);
//printing the tree
obj.inorder();



}
}


Expected output should be :- 10 14 16 20 21 25 25 30

Output I am getting:- * 10 * 14 * 16 * 20 * 21 * 25 * 25 * 30 *

最佳答案

private void inOrder(Node node) {
if (node != null) {
if(node.left != null)
inOrder(node.left);
System.out.print(node.data + " ");
if(node.right != null)
inOrder(node.right);
} else {
System.out.print("*" + " ");
}
}

我刚刚添加了条件来检查节点的邻居在排序之前是否不为 null:

if(node.left != null)
if(node.right != null)

输出:

10 14 16 20 21 25 25 30

关于java - 这段代码中的中序遍历有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56059204/

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