Else条件もif条件と一緒に実行されています--inOrder(Node node)メソッド
与えられたコードを使用して実際に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();
}
}
期待される出力は次のようになります:-10 14 16 20 21 25 25 30
私が得ている出力:-* 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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加