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;
}
相关推荐
Nil2084 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
All for pursuit.7 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
Escalating_xu7 小时前
【C 语言】深入理解指针(5):sizeof、strlen、数组名语义与指针笔试题全解析
java·c语言·开发语言
Code_Solitude8 小时前
c语言:递归
java·c语言·算法
万年咸鱼8 小时前
解决C语言的内存释放机制
java·c语言·python
老王爱玩车10 小时前
自定义类型:结构体
c语言·开发语言·学习
CoderYanger11 小时前
A.每日一题:1614. 括号的最大嵌套深度
java·程序人生·算法·leetcode·面试·学习方法
Logic10111 小时前
C语言/数据结构字符串题解:最短循环节——找出能重复构成原串的最短基础子串
c语言·数据结构·字符串·枚举·时间复杂度·算法题·kmp优化
我就是不信11 小时前
CuTest:轻量级 C 语言单元测试框架实战指南
c语言·单元测试·log4j
Xin77011 小时前
LeetCode 230. 二叉搜索树中第 K 小的元素(迭代中序遍历 + 栈)
leetcode