二叉树的建立及其遍历算法的应用问题描述

来源:百度知道 编辑:UC知道 时间:2024/06/28 13:31:01
二叉树的建立及其遍历算法的应用问题描述
二叉树的遍历一般都采用递归算法,程序简单易用,并且有比较大的应用意义。该题目要求设计一个程序,利用相应的遍历算法统计该二叉树的叶子节点的个数。
2.基本要求
(1)、采用二叉链表作二叉树的存储结构
(2)二叉树要求用二叉树的先序遍历算法动态建立
(3)要求能够甚至屏幕上输出相应的数据
那为大哥能帮忙啊,急用,
也可以发油箱laixin19860817@126.com
这个有错误没办法运行,在线等

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

typedef char *BTree;

typedef enum{OVERFLOW=-2,ERROR,FALSE,OK,TRUE} Status;

Status InitBTree(BTree *bt,char *Node)
{
int Length;
int i;
for(Length=0;Node[Length];Length++); /*确定二叉树的节点数*/
*bt=(BTree)malloc((Length+1)*sizeof(char));/*分配存储空间,0#单元保存长度*/
if(!(*bt)) exit(OVERFLOW);
(*bt)[0]=Length;
for(i=0;i<Length;i++)
(*bt)[i+1]=Node[i];
return OK;
}

Status Visit(char c)
{
printf("%c",c);
return OK;
}

Status PreorderTraverse(BTree bt,int i)
{ /*递归先序遍历*/
if(i<=bt[0] && bt[i]!='#')
{
Visit(bt[i]);
if(2*i<=bt[0] && bt[2*i]!='#') PreorderTraverse(bt,2*i);
if(2*i+1<=bt[0] && bt[2*i+1]!='#') PreorderTraverse(bt,2*i+1);
}
return OK;
}
void