package dd;
import java.util.Scanner;
class Node {
public double data;
public dd.Node leftNode;
public dd.Node rightNode;
public Node(double n) {
data = n;
}
public void display() {
System.out.print(this.data + "\t");
}
}
class Tree {
private dd.Node root;
public void insert(double data) {
dd.Node newNode = new dd.Node(data);
if (root == null) {
root = newNode;
}
dd.Node current = root;
dd.Node parentNode = null;
while (current != null) {
parentNode = current;
if (current.data > data) {
current = current.leftNode;
if (current == null) {
parentNode.leftNode = newNode;
}
} else {
current = current.rightNode;
if (current == null) {
parentNode.rightNode = newNode;
}
}
}
}
public void preOrderTraverse() {
preOrderTraverse(root);
System.out.println();
}
private void preOrderTraverse(Node node) {
if (node == null)
return;
node.display();
preOrderTraverse(node.leftNode);
preOrderTraverse(node.rightNode);
}
}
public class Main {
public static void showmenu(){
System.out.println("-------------------------\n");
System.out.println("a to add \n");
System.out.println("b to show \n");
System.out.println("c to quit\n");
System.out.println("-------------------------\n");
}
public static void main(String[] args) {
Tree tree = new Tree();
double a;
char ch;
Scanner sc = new Scanner(System.in);
showmenu();
ch = sc.next().charAt(0);
while (ch != 'c') {
switch (ch) {
case 'a':
System.out.println("Enter a numble :\n");
a = sc.nextDouble();
tree.insert(a);
break;
case 'b':
System.out.println("Here is the result:\n");
tree.preOrderTraverse();
break;
case 'c':
break;
default:
break;
}
showmenu();
ch = sc.next().charAt(0);
}
}
}

为什么会出现这样的报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 皮蛋不吃粥 2022-10-06 14:29关注
根节点为空直接返回
if (root == null) { root = newNode; return; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报