【leetcode】144. 二叉树的前序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[1,2]
示例 5:
输入:root = [1,null,2]
输出:[1,2]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
解题思路:
二叉树
前序遍历 根左右
中序遍历 左根右
后序遍历 左右根
代码:
C:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
void preorder(struct TreeNode* root, int *res, int *returnSize)
{
if (!root)
{
return;
}
res[(*returnSize)++] = root -> val;
preorder(root -> left, res, returnSize);
preorder(root -> right, res, returnSize);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize){
int * res = (int *)malloc(sizeof(int) * 2000);
*returnSize = 0;
preorder(root, res, returnSize);
return res;
}