题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return int整型二维数组 * @return int* returnSize 返回数组行数 * @return int** returnColumnSizes 返回数组列数 */ int** Print(struct TreeNode* root, int* returnSize, int** returnColumnSizes ) { // write code here int** res = (int**)malloc(sizeof(int*) * 1500); int* nums = (int*)malloc(sizeof(int) * 1500); if (root == NULL) { *returnSize = 0; return res; } *returnColumnSizes = (int*)malloc(sizeof(int) * 1500); struct TreeNode* queue[1500]; struct TreeNode* temp; int front = 0, rear = 0, i = 0; queue[rear++] = root; while (front < rear) { int last = rear; int j = 0; res[i] = (int*)malloc(sizeof(int) * 1500); memset(nums, 0, sizeof(int) * 1500); while (front < last) { temp = queue[front++]; if (i % 2 != 0) nums[j++] = temp->val; if (i % 2 == 0) res[i][j++] = temp->val; if (temp->left) queue[rear++] = temp->left; if (temp->right) queue[rear++] = temp->right; } int p = 0; if (i % 2 != 0) { for (int k = j - 1; k >= 0; k--) { res[i][p++] = nums[k]; } } (*returnColumnSizes)[i] = j; i++; } *returnSize = i; return res; }