BM25 二叉树的后序遍历
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
解法(队列)
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型二维数组
* @return int* returnSize 返回数组行数
* @return int** returnColumnSizes 返回数组列数
*/
typedef struct TreeNode* pnode;
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes ) {
// write code here
if (root == NULL) {
return NULL;
}
pnode queue[1500];
int front = 0;
int rear = 0;
queue[rear++] = root;
int** ans = (int**)malloc(1500 * sizeof(int*));
*returnSize = 0;
*returnColumnSizes = (int*)malloc(1500 * sizeof(int));
while (front != rear) {
int prerear = rear;
int k = 0;
ans[*returnSize] = (int*)malloc((prerear - front) * sizeof(int));
while (front < prerear) {
pnode p = queue[front++];
ans[*returnSize][k++] = p->val;
if (p->left != NULL) {
queue[rear++] = p->left;
}
if (p->right != NULL) {
queue[rear++] = p->right;
}
}
(*returnColumnSizes)[*returnSize] = k;
(*returnSize)++;
}
return ans;
}