二叉树建立及其先序遍历(C语言)
题目描述:
Description
按先序遍历顺序输入二叉树的各个结点值,采用二叉链表的存储结构存储该二叉树,并按先序遍历输出二叉树的各结点的值及深度。Input
按先序遍历顺序输入二叉树的各个结点值,#表示空节点。
Output
该二叉树的先序遍历序列,在每个节点后输出它在树中的深度。Sample Input
ABD##E##C##Sample Output
A(1)B(2)D(3)E(3)C(2) C语言解法: #include#include
typedef struct BiTNode {
char Data;
int deepth;
struct BiTNode *LChild;
struct BiTNode *RChild;
} BiTNode, *BiTree;
void CreateBiTree(BiTree &T, int count) {
char ch;
scanf("%c", &ch);
if(ch == '#') T = NULL;
else {
T = (BiTNode *)malloc(sizeof(BiTNode));
T->Data = ch;
T->deepth = ++count;
CreateBiTree(T->LChild, T->deepth);
CreateBiTree(T->RChild, T->deepth);
}
}
void Visit(BiTree &T) {
if(T != NULL)
printf("%c(%d)", T->Data, T->deepth);
else return;
Visit(T->LChild);
Visit(T->RChild);
}
int main() {
BiTree T;
CreateBiTree(T,0);
Visit(T);
return 0;
}