C语言使用先序遍历创建二叉树

复制代码
#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    int data;
    struct node * left;
    struct node * right;
} Node;

Node * createNode(int val);
Node * createTree();
void freeTree(Node * node);

void preOrder(Node * node);

// 先序创建二叉树
int main() {

    Node * root = createTree();
    preOrder(root);
    freeTree(root);
    return 0;
}

Node * createNode(int val) {
    Node * node = (Node *)malloc(sizeof(Node));
    if (node == NULL)
    {
        printf("内存申请异常");
        exit(-1);
    }
    node->data = val;
    node->left = NULL;
    node->right = NULL;
    return node;
}

Node * createTree() {
    int val = 0;
    printf("请输入创建树的数据 0为NULL:");
    scanf("%d", &val);
    if (val == 0)
    {
        return NULL;
    }

    Node * node = createNode(val);
    printf("请输入%d的左子节点:", val);
    node->left = createTree();
    printf("请输入%d的右子节点:", val);
    node->right = createTree();

    return node;
}

void preOrder(Node * node) {
    if (node == NULL)
    {
        return;
    }
    
    printf("%d ", node->data);
    preOrder(node->left);
    preOrder(node->right);
}

void freeTree(Node * root) {
    if (root == NULL)
    {
        return;
    }

    freeTree(root->left);
    freeTree(root->right);
    free(root);
}

这棵树的结构为

运行效果

相关推荐
Lsir10110_2 分钟前
【力扣hot100】矩阵题通关复盘
算法·leetcode·矩阵
退休倒计时3 分钟前
【每日一题】LeetCode 207. 课程表 TypeScript
算法·leetcode·typescript
稚南城才子,乌衣巷风流24 分钟前
树的重心:概念、性质与算法详解
算法·深度优先·图论
不会就选b27 分钟前
算法日常・每日刷题--<哈希>1
算法·哈希算法
zander25836 分钟前
LeetCode 207. 课程表
算法·深度优先
萌动的小火苗38 分钟前
深度学习中的损失函数与优化算法基础知识
人工智能·深度学习·算法
happyprince40 分钟前
02_OpenCodeReview 具体观:八种算法机制与背后的论文谱系
算法
变量未定义~43 分钟前
图论+动态规划——魔法阵
算法
大爱编程♡1 小时前
C++基础-类和对象
c++·算法
ysa0510301 小时前
【板子】费用流
算法·深度优先·图论