题解 | #农场牛的最佳观赏次序#
农场牛的最佳观赏次序
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#