C语言二叉树的创建及遍历
创建与遍历都是是采用递归的思想
在遍历的同时还输出了结点所在二叉树的层数
// ctest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
//创建一棵二叉树
void createBiTree(BiTree *T){
char c;
scanf("%c", &c);
if (c == ' '){
*T = NULL;
}
else{
*T = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->data = c;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
}
//输出结点以及该结点所在的层数
void visit(char c, int level){
printf("%c%d", c, level);
}
//前序遍历二叉树
void PreOrderTraverse(BiTree T,int level){
if (T){
visit(T->data, level);
PreOrderTraverse(T->lchild, level + 1);
PreOrderTraverse(T->rchild, level + 1);
}
}
int main(){
int level = 1;
BiTree T = NULL;
createBiTree(&T);
PreOrderTraverse(T, level);
return 0;
}