C语言 | Leetcode C语言题解之第144题二叉树的前序遍历

题目:

题解:

cpp 复制代码
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    int* res = malloc(sizeof(int) * 2000);
    *returnSize = 0;
    if (root == NULL) {
        return res;
    }

    struct TreeNode *p1 = root, *p2 = NULL;

    while (p1 != NULL) {
        p2 = p1->left;
        if (p2 != NULL) {
            while (p2->right != NULL && p2->right != p1) {
                p2 = p2->right;
            }
            if (p2->right == NULL) {
                res[(*returnSize)++] = p1->val;
                p2->right = p1;
                p1 = p1->left;
                continue;
            } else {
                p2->right = NULL;
            }
        } else {
            res[(*returnSize)++] = p1->val;
        }
        p1 = p1->right;
    }
    return res;
}
相关推荐
cynicme2 分钟前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
ACP广源盛139246256732 小时前
(ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
c语言·开发语言·单片机·嵌入式硬件·音视频
im_AMBER3 小时前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
是苏浙6 小时前
零基础入门C语言之C语言内存函数
c语言·开发语言
2301_807997388 小时前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法8 小时前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
小欣加油8 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
海琴烟Sunshine9 小时前
leetcode 190. 颠倒二进制位 python
python·算法·leetcode
AI柠檬10 小时前
C语言基于MPI并行计算矩阵的乘法
c语言·c++·算法
海琴烟Sunshine10 小时前
leetcode 338. 比特位计数 python
python·算法·leetcode