解决方案 »

  1.   

    向二叉树中插入数据时,每次root为空,不知道怎么回事,有没有人知道原因呀,请大神帮帮忙,小女子感激不尽
      

  2.   

    java虽然是引用传递,但是null的引用是不能传的
    class SearchTree {
    TreeNode root=null;
    public void insertTree(TreeNode node, int x) {
    if (node==null) {
    root=new TreeNode(x);
    } else {
    if (x<=node.val) {
    if (node.left==null) {
    node.left=new TreeNode(x);
    } else {
    insertTree(node.left,x);
    }
    } else {
    if (node.right==null) {
    node.right=new TreeNode(x);
    } else {
    insertTree(node.right,x);
    }
    }
    }
    preOrder(root);
    }
    public void preOrder(TreeNode node) {
    if (node==null) {
    System.out.println("null");
    }
    if (node.left==null&&node.right==null) {
    System.out.println(node.val);
    } else if (node.left==null&&node.right!=null) {
    System.out.println(node.val);
    preOrder(node.right);
    } else if (node.left!=null&&node.right==null) {
    preOrder(node.left);
    System.out.println(node.val);
    } else {
    preOrder(node.left);
    System.out.println(node.val);
    preOrder(node.right);
    }
    }
    public static void main(String[] args) {
    SearchTree st=new SearchTree();
    int a[]={5,2,3,5,7,8};
    // TreeNode root = null ;
    for (int i=0; i<a.length; i++) {
    st.insertTree(st.root,a[i]);
    }
    st.preOrder(st.root);
    System.out.println(st.root);
    }
    }
      

  3.   

    st.insertTree(st.root,a[i]);
    相当于
    st.insertTree(null,a[i]);
      

  4.   

    我觉得你错在对root进行null值判断后,应该是对this.root赋值,而不是对insertTree的参数root赋值。修改如红色部分。希望能帮到你。public class SearchTree {
        TreeNode root =null;
    public void insertTree(TreeNode root, int x){
    if(root == null){
    this.root = new TreeNode(x);
    }
    else{
    if(x <= root.val){
    insertTree(root.left,x);
    }
    else{
    insertTree(root.right,x);
    }
    }
    //preOrder(root);
    }
      

  5.   

    你的程序实际上始终都没有对对象st的属性root赋值