天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

用先序序列创建二叉树

Posted on 2012-03-03 20:05 hoshelly 阅读(2201) 评论(0)  编辑 收藏 引用 所属分类: DS && Algorithm
#include<stdio.h> //用先序序列创建一棵二叉树,并输出字符D位于二叉树的层数
#include<stdlib.h>
#include
<conio.h>
typedef 
struct BiTNode
{
    
char data;
    
struct BiTNode *lchild,*rchild;
}BiTNode,
*BiTree;

CreatBiTree(BiTree 
*T)
{
    
char c;
    scanf(
"%c",&c);
    
if(c == ' '*T=NULL; //如果输出的是空格,则表示创建的子树结束
    else
    {
        
*T=(BiTNode*)malloc(sizeof(BiTNode)); //创建根结点
        (*T)->data=c; //向根结点中输入数据
        CreatBiTree(&((*T)->lchild)); //递归地创建左子树
        CreatBiTree(&((*T)->rchild)); //递归地创建右子树
    }
}
//访问二叉树结点,输出包含D字符结点位于二叉树中的层数
visit(char c,int level)
{
    
if(c=='D')
        printf(
"%c is at %d lever of BiTree\n",c,level);
}
PreOrderTraverse(BiTree T,
int level)
{
    
if(T)    //递归结束条件,T为空
    {
        visit(T
->data,level);//访问根结点
        PreOrderTraverse(T->lchild,level+1);
        PreOrderTraverse(T
->rchild,level+1);
    }
}

int main()
{
    
int level=1;
    BiTree T
=NULL; //最开始T指向空
    CreatBiTree(&T);
    PreOrderTraverse(T,level);
    getche();
    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理