键盘上的舞者

My Email: marckywu@gmail.com
随笔 - 19, 文章 - 0, 评论 - 3, 引用 - 0
数据加载中……

二叉树的创建及遍历(递归代码)

typedef enum _STATUS {ERROR, OK} STATUS;

typedef 
struct _BiTNode {
    
char data;
    
struct _BiTNode *lchild;
    
struct _BiTNode *rchild;
} BiTNode, 
*BiTree;

/*创建二叉树*/
STATUS CreateBiTree(BiTree 
*T)
{
/*按先序次序输入二叉树节点的值,空格表示空树。*/
    
char ch;
    
    scanf(
"%c"&ch);
    
if (ch == ' ') { 
        
*= NULL;
    } 
else {
        
if ( !(*= (BiTNode *)malloc(sizeof(BiTNode)))) exit(-1);
        (
*T)->data = ch;                     //生成根节点
        CreateBiTree(&((*T)->lchild));       //构造左子树
        CreateBiTree(&((*T)->rchild));       //构造右子树
    }
    
return OK;
}

/*中序遍历二叉树*/
STATUS InOrderTraverse(BiTree 
*T)
{
    
if (*T) {
        
if (InOrderTraverse(&((*T)->lchild)))
            printf(
"%c ", (*T)->data);
            
if (InOrderTraverse(&((*T)->rchild)))
                
return OK;
        
return ERROR;
    } 
else {
        
return OK;
    }
}

posted on 2009-09-24 22:33 Marcky 阅读(425) 评论(0)  编辑 收藏 引用 所属分类: 数据结构和算法


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