144. Binary Tree Preorder Traversal(C语言)
先序遍历二叉树
题目
Given the root of a binary tree, return the preorder traversal of its nodes’ values.
Example 1:
Input: root = [1,null,2,3]
Output: [1,2,3]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Constraints:
The number of nodes in the tree is in the range [0, 100].
-100 <= Node.val <= 100
解答
递归先序遍历
/**
* 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().
*/
#define MAX_SIZE 101
int i;
void Tra(struct TreeNode* root, int *ret)
{
if(root == NULL)
return ;
ret[i] = root->val;
i++;
Tra(root->left, ret);
Tra(root->right, ret);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize){
i = 0;
int *ret = (int *)malloc(sizeof(int)*MAX_SIZE);
Tra(root, ret);
*returnSize = i;
return ret;
}
总结
先序遍历的递归函数结构:
void Tra(root, ...)
{
if(root == NULL)
...
...(其他在一个节点的操作)
Tra(root->left, ...);
Tra(root->right, ...);
}