二叉树的建立

2018-01-29  本文已影响0人  我有一只碗
#include <stdio.h>
#include <stdlib.h>


// 二叉树的二叉链表存储结构
typedef struct BiNode
{
    char data;
    struct BiNode *left_child, *right_child;
} BiNode, *BiTree;

// 建立二叉树
BiTree create_bitree()
{
    char c;
    BiTree t;
    scanf("%c", &c);
    // #表示该节点为空
    if (c == '#')
    {
        t = NULL;
    }
    else
    {
        t = (BiTree)malloc(sizeof(BiNode));
        t->data = c;
        // 分别建立左、右子树
        t->left_child = create_bitree();
        t->right_child = create_bitree();
    }
    // 返回根节点
    return t;
}

// 二叉树的前序遍历
void pre_traversal(BiTree t)
{
    if (t == NULL)
    {
        return;
    }
    printf("%c\n", t->data);
    pre_traversal(t->left_child);
    pre_traversal(t->right_child);
}

int main()
{
    BiTree root = create_bitree();
    pre_traversal(root);
    return 0;
}

测试:
输入:ABC####
输出:ABC

上一篇下一篇

猜你喜欢

热点阅读