`
xiaozhe
  • 浏览: 25561 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

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

阅读更多
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?
一直没有想明白,
求高手帮改一下...
谢谢
分享到:
评论
6 楼 抛出异常的爱 2007-05-23  
xiaozhe 写道
首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了

把你的程序运行一下把 input的字串打了一下。发现头 一个是 ‘ ’所以得出以上结论。。。
PS:不要用c的写法写java程序。。。不要暴露属性。。。不要在压栈时使用会逸出的方式。。。。不要。。。。
我这回说的够清楚了么。。。?
5 楼 xiaozhe 2007-05-22  
解决了,令人失望的论坛...
4 楼 Godlikeme 2007-05-22  
看出来了,写的不是二叉树,找本算法的书照着写写先。
3 楼 xiaozhe 2007-05-22  
首先我要感谢你的回答,如果你不喜欢读我的程序就算了,读不懂就说读不懂被,居然说我写的程序乱,明明是你没有看明白,并且很不负责任的回答,让我很失望...看了一下博客,天使不喜欢看代码...无语了
2 楼 抛出异常的爱 2007-05-22  
是你写的还是从书上抄的。。。。

就一个乱字。。。。

你的第一个
if(c[i]==' ')
这个如果用空格开头的话后面的就没用了。。。
1 楼 xiaozhe 2007-05-22  
运行起来是这样的,要按照先序的顺序输入,创建先序的二叉树,
ABC  DE G  F   ,空格表示没有孩子,
可是我创建之后tree.root的值还是null,
迷惑中...

相关推荐

    Java实现先序遍历二叉树

    在Java中,实现二叉树的先序遍历可以通过递归来完成。先序遍历的顺序是:首先访问根节点,然后递归地先序遍历左子树,最后递归地先序遍历右子树。 在这段代码中,Node类定义了二叉树的节点,包含数据域和指向左右子...

    建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数

    [问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的元素建立二叉树,能输出各种遍历。 [实现提示] 可通过输入带空格的前序序列建立二叉链表。

    二叉树先序遍历演示demo

    通过这个程序,初学者可以学习如何创建二叉树节点,连接节点以及执行先序遍历。程序可能包括以下部分: 1. 定义`TreeNode`类,表示二叉树的节点,包含节点值、左子节点和右子节点。 2. 实现随机生成二叉树的函数,...

    递归方式遍历二叉树

    java实现创建二叉树,并且遍历二叉树(此处使用递归方式遍历); 创建二叉树的方式有很多,此处使用线性的链表转化成二叉树,链表节点的顺序就是前序遍历的顺序,链表中的null值,代表二叉树左节点或者右节点为null...

    横向打印二叉树

    创建二叉树,先序遍历二叉树,横向打印二叉树

    建二叉树并分别用先先序、中序和后序遍历,然后输出各遍历序列

    在C++或Java等面向对象的语言中,我们可以创建一个`Node`类来表示二叉树节点,包含一个值字段以及对左右子节点的引用。 建立二叉树的过程通常是从给定的输入序列(如前序、中序或后序遍历序列)开始的。例如,如果...

    用java实现二叉树的创建和遍历.doc

    创建二叉树的步骤是基于输入的先序遍历序列。例如,输入字符串"ABC##DE#G##F###",其中'#'表示空节点。这个字符串表示的先序遍历顺序为A->B->C->D->E->G->F。创建二叉树的方法`CreateBiTree(FOBiTree T)`通过递归地...

    数据结构-二叉树(Java实现)

    1、假设二叉树的结点值是字符,根据输入的一颗二叉树的标明了空子树的完整先根遍历序列,建立一棵以二叉链表表示的二叉树。 2、对二叉树进行先根、中根和后根遍历操作,并输出遍历序列,同时观察输出序列是否与逻辑...

    JAVA二叉树课设可以实现用户输入数据以二叉树图形表示出来

    在Java中,二叉树通常使用链表来实现,每个节点包含一个数据元素、一个指向左子节点的指针和一个指向右子节点的指针。这种结构允许动态添加和删除节点,同时也方便进行遍历操作。 【二叉树操作算法】 1. **初始化**...

    java代码实例-二叉树的创建以及三种遍历(超详细).rar

    java代码实例-二叉树的创建以及三种遍历(超详细) 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-...

    二叉树建立遍历

    二叉树的建立通常有两种方式:一种是通过序列化数据(如字符串或数组)来构建,另一种是动态创建。例如,给定一个序列化的二叉树表示,如“4,2,5,1,3”,我们可以通过这个序列来构建一棵二叉树,其中4是根节点,2和5...

    Java完全二叉树的创建与四种遍历方法分析

    Java完全二叉树的创建与四种遍历方法分析 Java完全二叉树是指每个节点最多有两个孩子的树结构,且所有叶子节点都在最底层,除了最后一层外每层都是满的。Java完全二叉树的创建可以通过数组构建,下面是Java实现的...

    数据结构第六章课件及建立二叉树的二叉链表存储结构汇总

    "构建二叉树的二叉链表存储结构.doc" 文件可能详细介绍了如何通过给定的节点顺序来创建二叉链表,这通常涉及到递归或栈的数据结构。递归方法通常用于前序遍历构建,而栈则适用于其他两种遍历方式。在构建过程中,...

    JAVA编写的二叉树源代码(输入输出都有)

    在输入时,先序遍历可以按照用户输入的顺序创建二叉树。例如,用户输入的序列如"A B C D E *",其中A为根节点,B和C分别为A的左、右子节点,D和E分别为B的左、右子节点,*表示空节点。 4. **后序遍历**:后序遍历的...

    根据二叉树前序遍历和中序遍历的结果输出后序遍历(java)

    在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树的遍历是对其进行操作...在进行这类问题的解决时,理解和熟悉二叉树的性质以及各种遍历方法至关重要。

    编写算法交换二叉树中所有结点的左右子树.doc

    该算法使用 C 语言实现,通过建立二叉树、先序遍历输出结点数据和后序遍历交换左右子树三个步骤来实现。 一、建立二叉树 首先,需要建立一个二叉树。该算法使用队列来存储结点指针,以便便捷地访问和遍历二叉树。...

    java实现二叉树的创建及5种遍历方法(总结)

    本文将详细介绍如何使用Java创建二叉树以及实现五种不同的遍历方法:递归先序、中序、后序遍历,非递归的前序和中序遍历。以下是对这些知识点的详细说明: 1. **二叉树的创建**: 创建二叉树通常有两种方式:通过...

    数据结构-二叉树

    `tree`类则包含了创建二叉树节点的方法以及三种遍历方式的实现。在`main`方法中,创建了一个简单的二叉树并用不同的遍历方式进行打印输出。 总结来说,二叉树是一种重要的数据结构,通过先序、中序和后序遍历可以...

    VC++----二叉树(经典)

    在VC++环境下,我们可以使用C++语言来实现二叉树的各种操作,包括创建、插入、删除节点,以及遍历等。 首先,我们来详细了解一下二叉树的三种基本遍历方法: 1. 先序遍历(Preorder Traversal): 在先序遍历中,...

    数据结构 二叉树所有代码

    这个压缩包“数据结构 二叉树所有代码”显然提供了关于二叉树的各种操作的编程实现,可能是用C、C++、Java或Python等常见编程语言编写的。下面将详细介绍二叉树及其相关的知识点。 二叉树是一种特殊的树形数据结构...

Global site tag (gtag.js) - Google Analytics