题目描述:
思路
使用前序的方法,将数组按前序顺序访问,之后将题目数组按照前序顺序依次放入开辟的空间,最后返回。
解题过程
1.开辟数组空间。
2.完成前序遍历。
3.在前序遍历中,将题目数据拷入开辟的空间。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
TreeSize(struct TreeNode* root)
{
if(root==NULL)
{
return 0;
}
return 1+TreeSize(root->left)+TreeSize(root->right);
}
void _preorderTraversal(struct TreeNode* root,int* array,int* pi)
{
if(root==NULL)
{
return;
}
array[(*pi)++]=root->val;
_preorderTraversal(root->left,array,pi);
_preorderTraversal(root->right,array,pi);
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
int size=TreeSize(root);
int* array=(int*)malloc(sizeof(int)*size);
//按前序将数组排布
int i=0;
_preorderTraversal(root,array,&i);//i需要传地址,这样所有的++都会加到i上
*returnSize = size;
return array;
}