1. 题目描述
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
解释:
示例 2:
输入:root = [1,2,3,4,5,null,8,null,null,6,7,9]
输出:[1,2,4,5,6,7,3,8,9]
解释:
示例 3:
输入:root = []
输出:[]
示例 4:
输入:root = [1]
输出:[1]
2. 代码实现
void preoder(struct TreeNode* root, int* a, int* pi) {
if (root == NULL) {
return;
}
a[(*pi)++] = root->val;
preoder(root->left, a, pi);
preoder(root->right, a, pi);
}
int treeSize(struct TreeNode* root) {
return root == NULL ? 0 : treeSize(root->left) + treeSize(root->right) + 1;
}
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
*returnSize = treeSize(root);
int* a = (int*)malloc(*returnSize * sizeof(int*));
int i = 0;
preoder(root, a, &i);
return a;
}