【leetcode】103. 二叉树的锯齿形层次遍历
int** zigzagLevelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){ int** arr = (int**)calloc(100, sizeof(int*)); *returnSize = 0; *returnColumnSizes = (int*)calloc(100, sizeof(int)); if (!root) return arr; struct TreeNode* stArr[2000] = { 0 }; int i, j, left = 0, right = 0; stArr[right++] = root; while (left < right){ int len = right - left; arr[(*returnSize)] = (int*)calloc(len, sizeof(int)); for (i = left + len - 1; i >= left; i--) { arr[(*returnSize)][(*returnColumnSizes)[*returnSize]++] = stArr[i]->val; if ((*returnSize) % 2 == 0){ if (stArr[i]->left) stArr[right++] = stArr[i]->left; if (stArr[i]->right) stArr[right++] = stArr[i]->right; } else{ if (stArr[i]->right) stArr[right++] = stArr[i]->right; if (stArr[i]->left) stArr[right++] = stArr[i]->left; } } (*returnSize)++; left += len; } return arr; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步