103. Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:淘宝为什么比京东便宜 编辑:程序博客网 时间:2024/06/02 05:59
问题描述
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).For example:
Given binary tree [3,9,20,null,null,15,7],3/ \9 20 / \ 15 7
return its zigzag level order traversal as:
[[3],[20,9],[15,7]]
解决思路
参考102题,我们只需要将队列变成栈就可以。但是这里需要考虑一个问题,就是想z型输出,相邻的两层之间的左右节点push的顺序也需要变换。代码
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { if (root == NULL) return vector<vector<int>>(); stack<TreeNode*> cur; stack<TreeNode*> next; cur.push(root); vector<vector<int>> result; vector<int> tmp; bool flag = false; while(!cur.empty() || !next.empty()) { if (!cur.empty()) { tmp.push_back(cur.top()->val); if (!flag) { if (cur.top()->left != NULL) next.push(cur.top()->left); if (cur.top()->right != NULL) next.push(cur.top()->right); } else { if (cur.top()->right != NULL) next.push(cur.top()->right); if (cur.top()->left != NULL) next.push(cur.top()->left); } cur.pop(); } else { cur = next; next = stack<TreeNode*>(); result.push_back(tmp); tmp = vector<int>(); flag = !flag; } } result.push_back(tmp); return result; }};
0 0
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- Jenkins的安装与Android项目构建
- 通过TCP实现OTA的点对点上传,实现进度的监听
- MATLAB画高斯曲线
- Go语言学习笔记 -- 内建函数
- swit 闭包的基本使用
- 103. Binary Tree Zigzag Level Order Traversal
- (三)树
- 清华EMBA课程系列思考之十七(2) -- 公司治理
- 使用ThreadingMixIn实现多线程套接字服务器--《Python网络编程攻略》
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结——第三章垃圾收集器与内存分配策略
- apue练习题
- HTTP 学习笔记
- 492. Construct the Rectangle
- Bootstrap 按钮组与下拉按钮(Button Groups & Button Dropdowns)