消息关闭
    暂无新消息!

JAVA递归创建二叉树

问题作者 : 武藤溯2017-08-26发布
最近复习数据结构知识,以前都是用C语言写的相关,现在用JAVA写就出问题了请各位大神帮指点下,运行时说是空指针异常,找不出原因,特来求教:



import java.util.*;
import java.util.Scanner;
public class BinaryTree {   //二叉树相关操作

    private  Node root;
    Scanner sc=new Scanner(System.in); 
    
    class Node{
      private  String val;
      private Node treeLeft;
      private  Node treeRight;
      
      public  Node(String val){
     this.val=val;
     this.treeLeft=null;
     this.treeRight=null;
     }
    }
    
    public BinaryTree (){
     root=null;
    } 
    
   public void  createdBinaryTree(Node node){
     //递归建树二叉树
    
     String a=sc.next(); 
     if(a.trim().equals("#")){          //用#号区分没有子结点的情况
     node=new Node("#");
     }
     else{
             node=new Node(a); 
      System.out.print("创建node"+node.val); 
          createdBinaryTree(node.treeLeft); 
          createdBinaryTree(node.treeRight);
     } 
    }
    
    public void  preOrderBinaryTree(Node node){     //递归先序遍历二叉树
       if(node!=null){ 
          System.out.print(node.val+" ");
          preOrderBinaryTree(node.treeLeft);
         preOrderBinaryTree(node.treeRight);
       }  
     }
     
    public static void main(String[] args) { 
        BinaryTree bt=new BinaryTree();
        bt.createdBinaryTree(bt.root);
        bt.preOrderBinaryTree(bt.root);             //打印不出来,主要是头结点那就为null了
        System.out.print("test:"+bt.root.val);     //测试输出发现头结点是空的,
    }
}




2个回答

︿ 1
你写的private  Node root;明明是私有的,怎么能直接点访问呢?难道不会报错?
︿ 0
你写的private  Node root;明明是私有的,怎么能直接点访问呢?难道不会报错?