[ 题目描述 ]:
[ 思路 ]:
- 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;
}
[ 官方题解 ]:
- 广度优先遍历:基本同上