题解 | #农场牛的最佳观赏次序#

农场牛的最佳观赏次序

https://www.nowcoder.com/practice/8d618f78ba424b45924fb15c2857b515

1.考察知识点:

二叉树、中序遍历

2.编程语言:

C

3.解题思路:

这题是典型的中序遍历,每次先递归调用左子树进行遍历,然后保存根节点值到结果数组,最后递归调用右子树进行遍历。

题目中给出了int *returnsize数组,若单纯的将其看作返回数组,则无法对该数组进行挨个赋值,可以将其看作返回数组的指针,确定每次root节点值存在的位置。因此需要定义一个新的函数参数包含返回数组res和数组头指针returnsize。

4.完整代码

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
#include <stdlib.h>
int i = 0;
void inorder(struct TreeNode* root,int *returnSize,int *res)
{
    if(root!=NULL)
    {
        inorder(root->left, returnSize, res);
        res[(*returnSize)++]=root->val;
        inorder(root->right, returnSize, res);
    }
}

int* inorderTraversal(struct TreeNode* root, int *returnSize) {
    // write code here
    int* res = (int*)malloc(sizeof(int)*1000);
    *returnSize = 0;
    inorder(root, returnSize, res);
    return res;
}

#面试高频TOP202#
全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务