public static void main(String[] args) throws IOException {
// 创建二叉树(*表示null)
System.out.println("请输入二叉树:"); Scanner sc = new Scanner(System.in);
BTree bTree = new BTree();
bTree.createBTree(bTree.root, sc);
bTree.preOrder(bTree.root);} /**
 * 前序创建二叉树(-1表示空)
 * @param node
 * @param sc
 */
public void createBTree(Node node, Scanner sc) {
if (sc.hasNext()) {
int data = Integer.valueOf(sc.next());
if (data != -1) {
node = new Node(data);
if (root == null) { 
if (data == -1) {
return;
}
root = node;

createBTree(node.leftTree, sc);
createBTree(node.rightTree, sc);
}
}

这样子有什么问题么?但是这个二叉树就是建立不起来,怪异了

解决方案 »

  1.   

    debug一下
      

  2.   

    调试过了,root的lefttree和rightTree一直都是null,但是明明就是已经赋值了的,估计是参数传递中引用传递和数值传递的问题?
      

  3.   

    root变量在哪里声明了?
      

  4.   

    先不说算法写的对不对,scanner有nextInt方法不用,还用个Integer.valueOf闲得蛋疼吗?
      

  5.   

    node 本来就是指向某个树叶节点的但是你node = new Node(data);之后他就重新指向了一个新的节点
    node = new Node(data);是建了一个新节点
    但是你并没有吧这个节点赋给左右孩子
    类似于
    node = new Node(data);
    root.leftChild = node;