1.编写程序任意输入二叉树的结点个数和结点值,构造一棵二叉树,采用三种递归遍历算法(前序、中序、后序)

对这棵二叉树进行遍历并计算出二叉树的高度。急!!发邮箱[email protected]
要简单详细的注释~~~谢谢!!急急急急急

tree.h

#include<stdio.h>
#include<malloc.h>
#define MAX_NODE 50
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;

}BiTNode,*BiTree;
BiTree CreateBiTree();
void InorderTraverse( BiTree T);

creatTree.cpp
#include"tree.h"

BiTree CreateBiTree()
{

BiTree T;
char ch;
scanf("%c",&ch);
if (ch=='#')
{
T=NULL;
return T;

}

else
{
T=(BiTNode *)malloc(sizeof(BiTNode));

if (T==NULL)
{
printf("树创建失败!");
T=NULL;

return T;
}

T->data=ch;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
return T;
}
}

InorderTraverse.cpp
#include"tree.h"
void InorderTraverse( BiTree T)
{
BiTree stack[MAX_NODE] ,p=T ;
int top=0 , bool1=1 ;
if (T==NULL)
printf("Binary Tree is Empty!\n");
else
{
do
{
while (p!=NULL)
{
stack[++top]=p ;
p=p->lchild ;
}

if (top==0)
{
bool1=0 ;
}else{
p=stack[top] ;
top-- ;
printf("%c",p->data);
p=p->rchild ;
}
} while (bool1!=0) ;
}
}

main_fun.cpp
#include"tree.h"
int main()
{

BiTree T= CreateBiTree();
InorderTraverse(T);
return 0;

}
traverse.cpp
#include"tree.h"
void PreorderTraverse(BiTree T)
{
if (T!=NULL)
{
/* 访问根结点 */
PreorderTraverse(T->lchild) ;
printf("%c",T->data);
PreorderTraverse(T->rchild) ;
}
}

例如 输入 AB###
输出BA
先序输入 中序输出
可以修改遍历方式 来改变输出结果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-03
你这个问题不对吧?任意输入二叉树的结点个数和结点值,可能能构造很多种二叉树追问

老师给的就是这个。。。。。。

追答

http://wenku.baidu.com/view/19e6b78202d276a200292edc.html 希望对你有帮助

相似回答