论坛首页 入门技术论坛

用java先序创建二叉树的问题

浏览 6062 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-22  
import java.io.*;

class Node{
    Node left;
    Node right;
    char str;
    public Node(){
        this.right=null;
        this.left=null;
    }
    public Node(char str){
        this(str,null,null);
    }
    public Node(char str, Node left, Node right){
        this.str=str;
        this.left=left;
        this.right=right;
    }
    public void visit(){
        System.out.println(str+" ");
    }
}
class Tree {
    Node root;
    char c[];
    int i=0;
    public Tree() {
        root=null;
    }
    public Node CreatTree(Node node){
        if(c[i]==' '){
            node=null;
            i++;
        }
        else{
        	node=new Node(c[i]);
            System.out.println("node: "+i+" "+node.str);
            i++;
            CreatTree(node.left);
            CreatTree(node.right);
        }
        return node;
    }
    public void preorder(Node node){
        if(node!=null){
            node.visit();
            preorder(node.left);
            preorder(node.right);
        }
        else{
        	System.out.println("Tree node is empty");
        }
    }
}

public class PreOrder {
	public static void main(String args[]) throws IOException{ 
        System.out.println("please input Inorder tree");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s=br.readLine();
        Tree tree=new Tree();
        tree.c=s.toCharArray();
        tree.root=tree.CreatTree(tree.root);
        tree.preorder(tree.root);
    }
}

为什么我调用的tree.CreatTree(tree.root);
创建之后,tree的root还是null?
一直没有想明白,
求高手帮改一下...
谢谢
   发表时间:2007-05-22  
运行起来是这样的,要按照先序的顺序输入,创建先序的二叉树,
ABC  DE G  F   ,空格表示没有孩子,
可是我创建之后tree.root的值还是null,
迷惑中...
0 请登录后投票
   发表时间:2007-05-22  
是你写的还是从书上抄的。。。。

就一个乱字。。。。

你的第一个
if(c[i]==' ')
这个如果用空格开头的话后面的就没用了。。。
0 请登录后投票
   发表时间:2007-05-22  
首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了
0 请登录后投票
   发表时间:2007-05-22  
看出来了,写的不是二叉树,找本算法的书照着写写先。
0 请登录后投票
   发表时间:2007-05-22  
解决了,令人失望的论坛...
0 请登录后投票
   发表时间:2007-05-23  
xiaozhe 写道
首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了

把你的程序运行一下把 input的字串打了一下。发现头 一个是 ‘ ’所以得出以上结论。。。
PS:不要用c的写法写java程序。。。不要暴露属性。。。不要在压栈时使用会逸出的方式。。。。不要。。。。
我这回说的够清楚了么。。。?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics