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?
一直没有想明白,
求高手帮改一下...
谢谢
分享到:
相关推荐
在Java中,实现二叉树的先序遍历可以通过递归来完成。先序遍历的顺序是:首先访问根节点,然后递归地先序遍历左子树,最后递归地先序遍历右子树。 在这段代码中,Node类定义了二叉树的节点,包含数据域和指向左右子...
[问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的元素建立二叉树,能输出各种遍历。 [实现提示] 可通过输入带空格的前序序列建立二叉链表。
通过这个程序,初学者可以学习如何创建二叉树节点,连接节点以及执行先序遍历。程序可能包括以下部分: 1. 定义`TreeNode`类,表示二叉树的节点,包含节点值、左子节点和右子节点。 2. 实现随机生成二叉树的函数,...
java实现创建二叉树,并且遍历二叉树(此处使用递归方式遍历); 创建二叉树的方式有很多,此处使用线性的链表转化成二叉树,链表节点的顺序就是前序遍历的顺序,链表中的null值,代表二叉树左节点或者右节点为null...
创建二叉树,先序遍历二叉树,横向打印二叉树
在C++或Java等面向对象的语言中,我们可以创建一个`Node`类来表示二叉树节点,包含一个值字段以及对左右子节点的引用。 建立二叉树的过程通常是从给定的输入序列(如前序、中序或后序遍历序列)开始的。例如,如果...
创建二叉树的步骤是基于输入的先序遍历序列。例如,输入字符串"ABC##DE#G##F###",其中'#'表示空节点。这个字符串表示的先序遍历顺序为A->B->C->D->E->G->F。创建二叉树的方法`CreateBiTree(FOBiTree T)`通过递归地...
1、假设二叉树的结点值是字符,根据输入的一颗二叉树的标明了空子树的完整先根遍历序列,建立一棵以二叉链表表示的二叉树。 2、对二叉树进行先根、中根和后根遍历操作,并输出遍历序列,同时观察输出序列是否与逻辑...
在Java中,二叉树通常使用链表来实现,每个节点包含一个数据元素、一个指向左子节点的指针和一个指向右子节点的指针。这种结构允许动态添加和删除节点,同时也方便进行遍历操作。 【二叉树操作算法】 1. **初始化**...
java代码实例-二叉树的创建以及三种遍历(超详细) 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-...
二叉树的建立通常有两种方式:一种是通过序列化数据(如字符串或数组)来构建,另一种是动态创建。例如,给定一个序列化的二叉树表示,如“4,2,5,1,3”,我们可以通过这个序列来构建一棵二叉树,其中4是根节点,2和5...
Java完全二叉树的创建与四种遍历方法分析 Java完全二叉树是指每个节点最多有两个孩子的树结构,且所有叶子节点都在最底层,除了最后一层外每层都是满的。Java完全二叉树的创建可以通过数组构建,下面是Java实现的...
"构建二叉树的二叉链表存储结构.doc" 文件可能详细介绍了如何通过给定的节点顺序来创建二叉链表,这通常涉及到递归或栈的数据结构。递归方法通常用于前序遍历构建,而栈则适用于其他两种遍历方式。在构建过程中,...
在输入时,先序遍历可以按照用户输入的顺序创建二叉树。例如,用户输入的序列如"A B C D E *",其中A为根节点,B和C分别为A的左、右子节点,D和E分别为B的左、右子节点,*表示空节点。 4. **后序遍历**:后序遍历的...
该算法使用 C 语言实现,通过建立二叉树、先序遍历输出结点数据和后序遍历交换左右子树三个步骤来实现。 一、建立二叉树 首先,需要建立一个二叉树。该算法使用队列来存储结点指针,以便便捷地访问和遍历二叉树。...
在计算机科学中,二叉树是一种常见的数据结构,它的每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树的遍历是对其进行操作...在进行这类问题的解决时,理解和熟悉二叉树的性质以及各种遍历方法至关重要。
本文将详细介绍如何使用Java创建二叉树以及实现五种不同的遍历方法:递归先序、中序、后序遍历,非递归的前序和中序遍历。以下是对这些知识点的详细说明: 1. **二叉树的创建**: 创建二叉树通常有两种方式:通过...
`tree`类则包含了创建二叉树节点的方法以及三种遍历方式的实现。在`main`方法中,创建了一个简单的二叉树并用不同的遍历方式进行打印输出。 总结来说,二叉树是一种重要的数据结构,通过先序、中序和后序遍历可以...
在VC++环境下,我们可以使用C++语言来实现二叉树的各种操作,包括创建、插入、删除节点,以及遍历等。 首先,我们来详细了解一下二叉树的三种基本遍历方法: 1. 先序遍历(Preorder Traversal): 在先序遍历中,...
这个压缩包“数据结构 二叉树所有代码”显然提供了关于二叉树的各种操作的编程实现,可能是用C、C++、Java或Python等常见编程语言编写的。下面将详细介绍二叉树及其相关的知识点。 二叉树是一种特殊的树形数据结构...