589. N 叉树的前序遍历

keybot
0
2025-08-20

#easy #树

给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历 。

n 叉树在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

提示:

  • 节点总数在范围 [0, 104]
  • 0 <= Node.val <= 104
  • n 叉树的高度小于或等于 1000

思路
前序遍历,根左右

/**
 * Definition for a Node.
 * struct Node {
 *     int val;
 *     int numChildren;
 *     struct Node** children;
 * };
 */

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */

#define MAX_NODE_SIZE 10000
void pre(struct Node* root, int* res, int* pos) {
    if (root == NULL)
        return;
    // 先访问根节点
    res[(*pos)++] = root->val;
    for (int i = 0; i < root->numChildren; i++) {
        pre(root->children[i], res, pos);
    }
}

int* preorder(struct Node* root, int* returnSize) {
    int* res = (int*)malloc(sizeof(int) * MAX_NODE_SIZE);
    int pos = 0;
    pre(root, res, &pos);
    *returnSize = pos;
    return res;
}```