给定一个二叉树,返回它的中序 遍历。

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,即可。

发布了79 篇原创文章 · 获赞 6 · 访问量 3788

猜你喜欢

转载自blog.csdn.net/qq_41152046/article/details/104923548