Что не так с неупорядоченным обходом в этом коде?

Условие 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 *

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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

Другие вопросы по теме