二叉树的创建和遍历(C版和java版)
2016-12-17 18:05
351 查看
![](https://images2015.cnblogs.com/blog/732858/201612/732858-20161217174735464-571348.png)
以这颗树为例:#表示空节点 前序遍历(根->左->右)为:ABD##E##C#F##
中序遍历(左->根->右)为:#D#B#E#A#C#F#
后序遍历(左->右->根)为:##D##EB###FCA
#include <stdio.h>
#include <stdlib.h>typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void ForEachTree(BiTree T)
{
if(T == NULL){
return;
}
// printf(" %c ",T->data);前序遍历
ForEachTree(T->lchild);
printf(" %c ",T->data);//中序遍历
ForEachTree(T->rchild);
// printf(" %c ",T->data);后序遍历
}void CreateBiTree(BiTree *T)
{
TElemType ch;
scanf("%c",&ch);
if('#' == ch){
*T = NULL;
}else{
*T = (BiTree)malloc(sizeof(BiTNode));(*T)->data = ch;
CreateBiTree(&(*T)->lchild);CreateBiTree(&(*T)->rchild);}
}
void main(){
//前序创建树,中序输出树
BiTree T;//根节点
CreateBiTree(&T);ForEachTree(T);}
![](https://images2015.cnblogs.com/blog/732858/201612/732858-20161217180425729-1288815180.png)
![](https://images2015.cnblogs.com/blog/732858/201612/732858-20161219105050900-1746721287.png)
public class BiThrTree {public void createTree(BiThrNode T){
String str;
str = new Scanner(System.in).next();
if("#".equals(str)){
//如果是'#',则不做任何处理,也就是说这个节点的数据、左孩子、右孩子都是null
//但这个节点不是null,这里需要注意
}else{
T.data = str;//给节点赋值T.lchild = new BiThrNode();
T.rchild = new BiThrNode();
createTree(T.lchild);
createTree(T.rchild);}
}
public void forEachTree(BiThrNode T){
if(T.data == null){//判断这个节点的数据是否为空
return;
}
forEachTree(T.lchild);
forEachTree(T.rchild);
System.out.print(T.data);//后序遍历}
public static void main(String[] args) {
BiThrNode T = new BiThrNode();
new BiThrTree().createTree(T);
new BiThrTree().forEachTree(T);}}class BiThrNode{
String data;
BiThrNode lchild;
BiThrNode rchild;}
![](https://images2015.cnblogs.com/blog/732858/201612/732858-20161219110120166-5610264.png)
![](https://images2015.cnblogs.com/blog/732858/201612/732858-20161219110205338-1637973251.png)
相关文章推荐
- java实现二叉树的创建以及遍历
- java创建二叉树并递归遍历二叉树
- java实现二叉树的创建及5种遍历
- Java 创建二叉树并遍历
- java之二叉树的创建和递归遍历
- Java 创建二叉树并遍历
- 大话数据结构(七)——二叉树创建与遍历(递归、非递归)的java实现
- 二叉树创建和遍历(Java版实现)
- Java实现二叉树的创建、删除、遍历
- java实现二叉树的创建及三种递归遍历
- Java实现二叉树的创建和遍历
- java实现二叉树的创建及遍历
- Java 二叉树创建遍历
- Java 创建二叉树并遍历
- 数据结构二叉树的java实现,包括二叉树的创建、搜索、删除和遍历
- Java创建二叉树及其遍历的递归和非递归实现
- Java实现二叉树的创建和遍历操作(有更新)
- 数据结构 — 二叉树(创建、遍历)java实现
- java创建二叉树及遍历
- Java 创建二叉树并遍历