1 Star 0 Fork 0

唐梓迅/leetcode题解

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
剑指offer32 1.91 KB
一键复制 编辑 原始数据 按行查看 历史
唐梓迅 提交于 2022-03-14 21:59 +08:00 . add 剑指offer32.
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){
if(root == NULL)
{
*returnSize = 0;
return NULL;
}
struct TreeNode* Node[1100];
int** nums = (int**)malloc(sizeof(int*)*1000);//答案返回的是二维数组,所以用二级指针
*returnColumnSizes = (int*)malloc(sizeof(int*)*1000);
//i:队列头坐标 j:队列尾坐标 p:数组行下标 q:数组列下标 count:每层节点数量
int i = 0, j = 0, p = 0, q = 0, count = 0, k = 1;
Node[j++] = root;
nums[p] = (int*)malloc(sizeof(int)*k);
(*returnColumnSizes)[p] = k;
while(i < j)
{
//出队列
struct TreeNode* temp = Node[i++];
//分层次填入数组
nums[p][q++] = temp->val;
// printf("%d %d %d %d\n", nums[p][q-1], p, q, k);
//如果左子树存在,将左子树入队列
if(temp->left)
{
Node[j++] = temp->left;
count++;
}
//如果右子树存在,将右子树入队列
if(temp->right)
{
Node[j++] = temp->right;
count++;
}
//前面代码和上一题一样,下面是关键思路部分:k代表当前层节点数,count代表下一层节点的数量
//其中k在当前层每填一个节点数时,就减1直到为零;
//与此同时,当k减小时,count代表下一层节点数在加1
//当k为0时,下一层所有节点刚好统计完毕,将下一层节点数count赋给k,并更新二维数组的下标
k--;
if(k == 0)
{
k = count;
count = 0;
q = 0;
p++;
nums[p] = (int*)malloc(sizeof(int)*k);
(*returnColumnSizes)[p] = k;
}
}
*returnSize = p;
// printf("%d\n", p);
return nums;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/Tang-CMer/leetcode-problem-solving.git
git@gitee.com:Tang-CMer/leetcode-problem-solving.git
Tang-CMer
leetcode-problem-solving
leetcode题解
master

搜索帮助