跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求助关于 Java 创建二叉树的问题
未分類
2 4 月 2020

求助关于 Java 创建二叉树的问题

求助关于 Java 创建二叉树的问题

資深大佬 : lm66058 12

[输入形式]

首先输入一个 n ( 0 到 n-1 编号)表示树中节点的个数,接下来 n-1 行每行有两个整数 a,b,表示 a 是 b 的父亲(建树统一先建左孩子后建右孩子),最后分别输出前序,中序,后续遍历的编号(每种遍历结果占一行,每行每个编号之间有一个空格,输出的第一个编号前没有空格,输出的最后一个编号后没有空格)。例如:4 个节点,1 是 0 的左孩子,2 是 0 的右孩子,3 是 1 的左孩子。

[输出形式]

输出前、中、后序遍历结果

[样例输入]

4

0 1

0 2

1 3

[样例输出]

0 1 3 2

3 1 0 2

3 1 2 0

核心代码:

public class Tree { int data; Tree lChild = null; Tree rChild = null;

public Tree(int data) {     this.data = data; }  public Tree() { }  public Tree CreatTree(Tree tree, int flag, int child) {     Tree t;     t = find(tree, flag);     if (t.lChild != null) {         t.rChild = new Tree(child);     } else {         t.lChild = new Tree(child);     }     return tree; }  private Tree find(Tree t, int data) {     Tree temp;     if (t != null) {         if (t.data == data) {             return t;         } else {             if (t.lChild != null) {                 temp = find(t.lChild, data);                 return temp;             }             if (t.rChild != null) {                 temp = find(t.rChild, data);                 return temp;             }         }     }     return null; }  public void PreOrderTree(Tree t) {     if (t != null) {         System.out.print(t.data + " ");         PreOrderTree(t.lChild);         PreOrderTree(t.rChild);     }  }  public void InOrderTree(Tree t) {     if (t != null) {         InOrderTree(t.lChild);         System.out.print(t.data + " ");         InOrderTree(t.rChild);     } }  public void LaOrderTree(Tree t) {     if (t != null) {         LaOrderTree(t.lChild);         LaOrderTree(t.rChild);         System.out.print(t.data + " ");     } } 

}

为什么我的程序一直创建左子树不报错,创建右子树就会报空指针错误,求大神指点 

大佬有話說 (6)

  • 資深大佬 : luckyrayyy

    “为什么我的程序一直创建左子树不报错,创建右子树就会报空指针错误”没看懂你的提问

  • 主 資深大佬 : lm66058

    @luckyrayyy 就是创建孩子结点时会报空指针错,比如按照样例输入的时候能正常输出,如果输入
    5
    0 1
    1 2
    1 5
    5 6
    输入到 5 6 的时候就会报空指针错误

  • 資深大佬 : luckyrayyy

    @lm66058 你的 find 方法返回值有可能是 null,然后 CreteTree 方法里的有可能是 null,你再给 t 的属性赋值可不就空指针了

  • 主 資深大佬 : lm66058

    @luckyrayyy 可是输入 5 6 之前数值为 5 的结点已经初始化并赋值了,为什么还是会报空指针错误,我把全部代码上传了,大佬帮我看看哪里出问题了

  • 主 資深大佬 : lm66058

    @luckyrayyy 感谢大神指点迷津,已经解决了

  • 資深大佬 : luckyrayyy

    @lm66058 这种问题实在太低级了,你看错误日志,肯定会告诉你哪一行空指针了,你就看那一行里哪有可能为 null 。另外针对你这种简单的逻辑,其他 IDE 不知道,至少 idea 就会提醒你有可能出现空指针,你肯定没看 ide 的 warn 。希望能解决渔的问题而不只是鱼的问题。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具