1、108、将有序数组转换为二叉搜索树(重点)
struct TreeNode* helper(int* nums, int left, int right) {//用一个有序数组来建一个名叫helper的二叉树 if (left > right) {//有序数组 return NULL; } // 总是选择中间位置左边的数字作为根节点 int mid = (left + right) / 2; struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));//给root分配了一个struct Treenode型指针的内存空间,第二个struct TreeNode*的意思是申请的空间的地址转化成了struct TreeNode型的地址 root->val = nums[mid]; root->left = helper(nums, left, mid - 1); root->right = helper(nums, mid + 1, right); return root; } struct TreeNode* sortedArrayToBST(int* nums, int numsSize) { return helper(nums, 0, numsSize - 1); }
2、杨辉三角
/** * Return an array of arrays of size *returnSize.返回大小为*returnSize的数组的数组 * The sizes of the arrays are returned as *returnColumnSizes array.数组的大小以*returnColumnSizes形式返回列大小数组 指向列数组指针的指针、注意:列数组在哪我们无从得知,也不需要知道、我们只要知道有个一阶指针指向它就行了,我把它叫做列数组指针 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().注意:返回的数组和 *columnSizes 数组都必须是 malloced,假设调用者调用 free() */ int** generate(int numRows, int* returnSize, int** returnColumnSizes) {// **generate是二维数组,returnSize是一阶指针,*returnSize是值, int** ret = malloc(sizeof(int*) * numRows);//共有numRows行 *returnSize = numRows;//returnSize是行数 *returnColumnSizes = malloc(sizeof(int) * numRows);//列数组指针申请了numRows的空间,列数和行数相等 for (int i = 0; i < numRows; ++i) {//i行 ret[i] = malloc(sizeof(int) * (i + 1));//第i行(数组中第i行的位置)行数申请i+1(i从0开始)个空间 (*returnColumnSizes)[i] = i + 1; ///*returnColumnSizes 在主函数中应该是一个一维数组,每个元素代表了当前排有多少个有效的列,一般这种题会有一个配套的 returnSize 代表共有多少排,这个一维数组,配合着排的总数,就可以让 Leetcode 后台去检查你的答案了。*/ //列数,在列数指针的位置的数组赋值为i+1表示有i+1列(i从0开始)
ret[i][0] = ret[i][i] = 1; for (int j = 1; j < i; ++j) { ret[i][j] = ret[i - 1][j] + ret[i - 1][j - 1]; } } return ret; }
总结:行:numRows=returnSize 列:returnColumnSizes
标签:遍历,struct,returnSize,int,中序,ret,numRows,二叉树,数组 From: https://www.cnblogs.com/zhishiyigenicheng/p/16800762.html