目录
1.解题思路
该题要利用前序遍历,将树的值存到数组中,所以在申请空间的时候,我们需要知道要申请多少空间,也就是要知道树到底有多少个结点,因此第一步要写个函数实现获得树的节点数,又因为该题提供的接口里写了申请空间,因为本题自带的接口不适合递归,所以我们可以将递归操作再另外写个函数来实现.
2.代码实现
2.1获得节点数接口:
int TreeNums(struct TreeNode* root)
{
if(root==NULL)
return 0;
return TreeNums(root->left)+TreeNums(root->right)+1;
}
2.2递归接口:
void Prev(struct TreeNode* root,int *a,int *i)
{
if(root==NULL)
return ;
a[(*i)++]=root->val;
Prev(root->left,a,i);
Prev(root->right,a,i);
}
2.3最终实现
int TreeNums(struct TreeNode* root)
{
if(root==NULL)
return 0;
return TreeNums(root->left)+TreeNums(root->right)+1;
}
void Prev(struct TreeNode* root,int *a,int *i)
{
if(root==NULL)
return ;
a[(*i)++]=root->val;
Prev(root->left,a,i);
Prev(root->right,a,i);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
int size=TreeNums(root);
int *a=(int*)malloc(sizeof(int)*size);
int pi=0;
Prev(root,a,&pi);
*returnSize=size;
return a;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!