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