Условие Else также выполняется вместе с условием if in - метод inOrder (узел узла)
На самом деле я добавляю узел в BST, используя данный код, и теперь я пытаюсь получить их, используя неупорядоченный обход, но вывод не в порядке, так как условие Else выполняется после каждого If.
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