[ 题目描述 ]:
[ 思路 ]:
- BFS,利用队列特性完成对树的层次遍历
- 运行如下
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {
if (!root) {
*returnSize = 0;
return NULL;
}
struct TreeNode* queue[2000];
int** res = (int**)malloc(2000*sizeof(int*));
*returnColumnSizes = (int*)malloc(2000*sizeof(int));
int front = 0, rear = 0;
*returnSize = 0;
queue[rear++] = root;
while (front < rear) {
int sum = rear - front;
res[*returnSize] = (int*)malloc(sum*sizeof(int));
(*returnColumnSizes)[*returnSize] = sum;
for (int i = 0; i < sum; i++) {
struct TreeNode* node = queue[front++];
res[*returnSize][i] = node->val;
if (node->left) {
queue[rear++] = node->left;
}
if (node->right) {
queue[rear++] = node->right;
}
}
(*returnSize)++;
}
return res;
}
[ 官方题解 ]:
- 广度优先遍历:基本同上