103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树 栈]
来源:互联网 发布:淘宝达人资历说明案例 编辑:程序博客网 时间:2024/05/20 12:49
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]]
具体解题思路:要采用之字形按层次遍历树,这里采用了两个栈来完成,由于遍历的时候是交叉从左到右或者从右到左的顺序,所以这里采用了flag来判断当前是应该按照从左到右还是从右到左的顺序。st1保存的是需要从右到左来遍历下一层的节点,st2保存的是需要从左到右来遍历下一层的节点。因此判断的依据就是当st1和st2都为空时整棵树就遍历完成。
class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { //vector<int> temp; vector<vector<int> > result; if(root == NULL) return result; stack<TreeNode*> st1; stack<TreeNode*> st2; int flag = 0; st1.push(root); while(st1.size()!=0 || st2.size() !=0) { if(flag == 0 && st1.size()>0) { vector<int> temps; while(st1.size()>0) { TreeNode* temp = st1.top(); if(temp->left != NULL) st2.push(temp->left); if(temp->right != NULL) st2.push(temp->right); st1.pop(); temps.push_back(temp->val); } result.push_back(temps); flag = 1; } if(flag == 1 && st2.size()>0) { vector<int> temps; while(st2.size()>0) { TreeNode* temp = st2.top(); if(temp->right != NULL) st1.push(temp->right); if(temp->left != NULL) st1.push(temp->left); st2.pop(); temps.push_back(temp->val); } result.push_back(temps); flag = 0; } } return result; }};
0 0
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树 栈]
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- Leetcode 103. Binary Tree Zigzag Level Order Traversal (Medium) (cpp)
- Binary Tree Zigzag Level Order Traversal(medium)
- Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树Zigzag遍历 解题报告
- Binary Tree Zigzag Level Order Traversal 二叉树ZigZag打印
- LeetCode 103. Binary Tree Zigzag Level Order Traversal(二叉树之字形遍历)
- (二叉树z字形层次遍历)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
- POJ 3275 Floyd传递闭包
- Android 获取固定的dip、dp值
- Java开发必备:java帮助文档网址下载或在线帮助
- EventBus
- 为什么apache要设置虚拟主机
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树 栈]
- 函数重载遇上函数默认值会发生什么?----二义性
- HDU 2425 Hiking Trip(bfs+优先队列)
- 大量POI的解决方案2
- mac 下virtual box 安装多台centOs并配置网络集群
- 延迟光照技术及其在虚拟漫游中的识应用
- 吸血鬼数字(JAVA)
- Native.js for Android
- js的navigator对象