二叉树建立及其先序遍历(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;
}

相关