LeetCode:二叉树的中序遍历(C语言)

1、前序遍历:根左右

2、中序遍历:左根右

3、后序遍历:左右根

1、问题概述:二叉树中序遍历

2、示例

示例 1:

复制代码
输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

复制代码
输入:root = []
输出:[]

示例 3:

复制代码
输入:root = [1]
输出:[1]

3、分析

(1)返回的是数组形式:先用malloc申请一片连续存储空间

(2)初始化存储空间,将*returnSize=0

(3)进行递归

(4)返回数组

4、代码

cpp 复制代码
void leftbl(struct TreeNode* root,int* returnSize,int *result){
    if(root!=NULL){
        // 中序遍历
        leftbl(root->left,returnSize,result);     // 左
        result[(*returnSize)++]=root->val;        // 根
        leftbl(root->right,returnSize,result);    // 右
        
        // 前序遍历
        /**
        result[(*returnSize)++]=root->val;        // 根
        leftbl(root->left,returnSize,result);     // 左
        leftbl(root->right,returnSize,result);    // 右
        */
        
        // 后序遍历
        /**
        leftbl(root->left,returnSize,result);     // 左
        leftbl(root->right,returnSize,result);    // 右
        result[(*returnSize)++]=root->val;        // 根
        */
    }
}


int* inorderTraversal(struct TreeNode* root, int* returnSize) {
    // 先申请一片内存空间
    int *result=malloc(sizeof(int)*1000);

    // 初始化(将内存存储空间设置为0)
    *returnSize=0;

    leftbl(root,returnSize,result);

    return result;
    
}
相关推荐
艾醒1 分钟前
大模型原理剖析——从技术特性、底层架构到落地逻辑的全维度解析
算法
秦苒&5 分钟前
【C语言】详解数据类型和变量(二):三种操作符(算数、赋值、单目)及printf
c语言·开发语言·c++·c#
无限进步_5 分钟前
【C语言&数据结构】有效的括号:栈数据结构的经典应用
c语言·开发语言·数据结构·c++·git·github·visual studio
Liangwei Lin12 分钟前
洛谷 B3637 最长上升子序列
算法
零K沁雪16 分钟前
multipart-parser-c 使用方式
c语言·开发语言
珂朵莉MM28 分钟前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第一赛季优化题--无人机配送
人工智能·算法·无人机
飞天遇见妞40 分钟前
C/C++中宏定义的使用
c语言·开发语言·c++
xiaoxue..40 分钟前
列表转树结构:从扁平列表到层级森林
前端·javascript·算法·面试
雨落在了我的手上41 分钟前
C语言入门(三十二):预处理详解(2)
c语言·开发语言
代码游侠1 小时前
复习——线程(pthread)
linux·运维·开发语言·网络·学习·算法