二叉树的建立和遍历

//建立二叉树并输出每个字符所在的层数

#include<stdio.h>
#include<stdlib.h>

typedef char ElemType;

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层\n",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; }

你可能感兴趣的:(二叉树的建立和遍历)