开发网站年度工作总结及明年工作计划,3d建模软件有哪些,wordpress网页不存在,html5静态模板给你二叉树的根节点 root #xff0c;返回其节点值的 锯齿形层序遍历 。#xff08;即先从左往右#xff0c;再从右往左进行下一层遍历#xff0c;以此类推#xff0c;层与层之间交替进行#xff09;。
思路一#xff1a;BFS
#define N 2000int** zigzagLevelOrder(st…给你二叉树的根节点 root 返回其节点值的 锯齿形层序遍历 。即先从左往右再从右往左进行下一层遍历以此类推层与层之间交替进行。
思路一BFS
#define N 2000int** zigzagLevelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {*returnSize 0;if (root NULL) {return NULL;}int** ans malloc(sizeof(int*) * N);*returnColumnSizes malloc(sizeof(int) * N);struct TreeNode* nodeQueue[N];int left 0, right 0;nodeQueue[right] root;bool isOrderLeft true;while (left right) {int levelList[N * 2];int front N, rear N;int size right - left;for (int i 0; i size; i) {struct TreeNode* node nodeQueue[left];if (isOrderLeft) {levelList[rear] node-val;} else {levelList[--front] node-val;}if (node-left) {nodeQueue[right] node-left;}if (node-right) {nodeQueue[right] node-right;}}int* tmp malloc(sizeof(int) * (rear - front));for (int i 0; i rear - front; i) {tmp[i] levelList[i front];}ans[*returnSize] tmp;(*returnColumnSizes)[*returnSize] rear - front;(*returnSize);isOrderLeft !isOrderLeft;}return ans;
}
分析
本题与上题相似直接使用广度优先搜索将每层数放入数组再输出即可注意 (*returnColumnSizes)[*returnSize] rear - front;
总结
本题考察广度优先搜索算法将每层按左向右再右向左的顺序放入数组再输出即可