binary-tree-zigzag-level-order-traversal
来源:互联网 发布:windows仿mac软件 编辑:程序博客网 时间:2024/06/06 05:29
题目描述
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]
]
confused what”{1,#,2,3}”means? > read more on how binary tree is serialized on OJ.
OJ’s Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where ‘#’ signifies a path terminator where no node exists below.
Here’s an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as”{1,2,3,#,#,4,#,#,5}”.
举个例子自己画画就知道了,用两个栈进行存储,先压左孩子和先压右孩子交替进行即可.
/** * 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>> res; if(root==NULL) return res; vector<int> vec; stack<TreeNode*> sta_lr; stack<TreeNode*> sta_rl; sta_lr.push(root); while(!sta_lr.empty()||!sta_rl.empty()){ while(!sta_lr.empty()){ TreeNode* temp=sta_lr.top(); vec.push_back(temp->val); if(temp->left) sta_rl.push(temp->left); if(temp->right) sta_rl.push(temp->right); sta_lr.pop(); } if(!vec.empty()){ res.push_back(vec); vec.clear(); } while(!sta_rl.empty()){ TreeNode* temp=sta_rl.top(); vec.push_back(temp->val); if(temp->right) sta_lr.push(temp->right); if(temp->left) sta_lr.push(temp->left); sta_rl.pop(); } if(!vec.empty()){ res.push_back(vec); vec.clear(); } } return res; }};
- 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
- Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 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
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 计算机牛人资料大全
- ORACLE PLSQL代码块学习
- 【日常】凸轮大法好
- Java设计模式《十七》单例模式
- Codefroces 410 B.Mike and strings
- binary-tree-zigzag-level-order-traversal
- 网易互联网2017在线笔试题目-魔力手环
- 插入排序——希尔排序
- Bash-shell
- Java设计模式《十八》桥接模式
- LeetCode 543. Diameter of Binary Tree
- bfs和dfs:poj2386和leetcode130
- linux 使用jrtplib收发h.264视频文件
- 无法打开输入文件“libcaffe.lib” 解决方法