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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度