LeetCode题解: Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:探地雷达测的数据图 编辑:程序博客网 时间:2024/05/23 16:55
Binary Tree Zigzag Level Order Traversal
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,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7]]
思路:
通过迭代方法按行访问。然后每访问一行,改变一次访问顺序和存放子结点的顺序。
题解:
/** * Definition for binary tree * 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) { vector<vector<int>> ret; if (root == nullptr) return ret; // direction of visiting bool fwd_direction = false; list<TreeNode*> this_row; list<TreeNode*> next_row; this_row.push_back(root); ret.push_back(vector<int>()); while(!this_row.empty()) { TreeNode* l; if (fwd_direction) { l = this_row.front(); this_row.pop_front(); } else { l = this_row.back(); this_row.pop_back(); } ret.back().push_back(l->val); if (fwd_direction) { if (l->right != nullptr) next_row.push_back(l->right); if (l->left != nullptr) next_row.push_back(l->left); } else { if (l->left != nullptr) next_row.push_front(l->left); if (l->right != nullptr) next_row.push_front(l->right); } if (this_row.empty()) { swap(this_row, next_row); ret.push_back(vector<int>()); fwd_direction = !fwd_direction; } } //if (ret.back().empty()) ret.pop_back(); return ret; }};
- LeetCode题解: Binary Tree Zigzag Level Order Traversal
- LeetCode 题解(32): Binary Tree Zigzag Level Order Traversal
- LeetCode题解:Binary Tree Zigzag Level Order Traversal
- LeetCode题解-103-Binary Tree Zigzag Level Order Traversal
- LeetCode 103 Binary Tree Zigzag Level Order Traversal 题解
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [Leetcode]Binary Tree Zigzag Level Order Traversal
- [leetcode]Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 指针学习(转来的,非常好的东西,很赞)
- Chicago Boss: a server framework inspired by Rails and written in Erlang
- 写Ruby真的是需要很强的定力啊,看来团队协作还是需要Python
- HFT Latency related resources
- 复习C语言系列一:10进制整数转2至32任意进制数
- LeetCode题解: Binary Tree Zigzag Level Order Traversal
- 安卓通过USB控制Arduino
- python连接MySQL、MongoDB、Redis、memcache等数据库的方法
- python 文件和路径操作函数小结
- Python MD5文件生成码
- Struts的Action自动装配到Spring 容器的配置
- linux性能监控工具介绍
- linux查看硬件常用命令小结(图文)
- LeetCode题解: Flatten Binary Tree to Linked List