二叉树的建立

#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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容