BSmanager 2022-10-06 11:10 采纳率: 50%
浏览 15
已结题

为什么会出现这样的报错


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);
        }
    }
}

img

  • 写回答

1条回答 默认 最新

  • 皮蛋不吃粥 2022-10-06 14:29
    关注

    根节点为空直接返回

        if (root == null) {
                root = newNode;
                return;
            }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制