【发布时间】:2019-09-27 06:39:08
【问题描述】:
Else 条件也与 - inOrder(Node node) 方法中的 if 条件一起运行
我实际上使用给定的代码在 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 *
【问题讨论】:
标签: java recursion binary-search-tree