浏览 6062 次
锁定老帖子 主题:用java先序创建二叉树的问题
精华帖 (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? 一直没有想明白, 求高手帮改一下... 谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-22
运行起来是这样的,要按照先序的顺序输入,创建先序的二叉树,
ABC DE G F ,空格表示没有孩子, 可是我创建之后tree.root的值还是null, 迷惑中... |
|
返回顶楼 | |
发表时间:2007-05-22
是你写的还是从书上抄的。。。。
就一个乱字。。。。 你的第一个 if(c[i]==' ') 这个如果用空格开头的话后面的就没用了。。。 |
|
返回顶楼 | |
发表时间:2007-05-22
首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了
|
|
返回顶楼 | |
发表时间:2007-05-22
看出来了,写的不是二叉树,找本算法的书照着写写先。
|
|
返回顶楼 | |
发表时间:2007-05-22
解决了,令人失望的论坛...
|
|
返回顶楼 | |
发表时间:2007-05-23
xiaozhe 写道 首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了
把你的程序运行一下把 input的字串打了一下。发现头 一个是 ‘ ’所以得出以上结论。。。 PS:不要用c的写法写java程序。。。不要暴露属性。。。不要在压栈时使用会逸出的方式。。。。不要。。。。 我这回说的够清楚了么。。。? |
|
返回顶楼 | |