其他条件也与-inOrder(节点节点)方法中的if条件一起运行
我实际上使用给定的代码在BST中添加了节点,现在我试图使用有序遍历来检索它们,但是由于Else
条件在每个If
之后执行,因此输出不是按有序方式进行的。 / p>
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();
}
}
预期输出应为:-10 14 16 20 21 25 25 30
我得到的输出是:-* 10 * 14 * 16 * 20 * 21 * 25 * 25 * 30 *
答案 0 :(得分:0)
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