1.给定一个二叉树,返回它的中序 遍历。
2.代码展示
/**
* 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().
*/
int treesize(struct TreeNode* root)
{
if (root == NULL)
{
return 0;
}
return 1+treesize(root->left)+treesize(root->right);
}
void _inorderTraversal(struct TreeNode* root,int *ret, int* returnSize)
{
if (root == NULL)
{
return ;
}
_inorderTraversal(root->left,ret,returnSize);
ret[(*returnSize)++] = root->val;
_inorderTraversal(root->right,ret,returnSize);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize)
{
int size = treesize(root);
int* ret = (int*)malloc(sizeof(int)*size);
*returnSize=0;
_inorderTraversal(root,ret,returnSize);
return ret;
}
3.解题思路
先求出结点个数size,然后再动态开辟一个大小为size的数组ret ,然后进行中序遍历,储存根结点的val,即可。