题目要求
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
思路
因为这个题需要以数组的形式返回,因此我们需要申请数组的大小,并且在返回值里面有一个returnSize,需要返回数组的大小,我们可以写一个TreeSize的函数,建立一个_inorderTraversal函数进行中序遍历把树的val存到数组中,然后返回数组。
图解
代码实现
int TreeSize(struct TreeNode* root)
{
if (root == NULL)
{
return 0;
}
return 1 + TreeSize(root->left) + TreeSize(root->right);
}
void _inorderTraversal(struct TreeNode* root, int* arr, int* pi)
{
if (root == NULL)
{
return;
}
_inorderTraversal(root->left, arr, pi);
arr[(*pi)++] = root->val;
_inorderTraversal(root->right, arr, pi);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
*returnSize = TreeSize(root);
int* arr = (int*)malloc(*returnSize * sizeof(int));
int i = 0;
_inorderTraversal(root, arr, &i);
return arr;
}