**(leetcode) Binary Tree Zigzag Level Order Traversal (tree)
来源:互联网 发布:ui美工培训 编辑:程序博客网 时间:2024/06/08 03:19
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]]
思路: 用两个stack来进行Z序遍历即可
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution { void myPush(stack<TreeNode*> &s, vector<int> &v, TreeNode *root){ if(root==NULL) return; v.push_back(root->val); s.push(root); }public: vector<vector<int> > zigzagLevelOrder(TreeNode *root) { vector<vector<int> > ans; if(NULL==root) return ans; stack<TreeNode*> s, tmp; TreeNode *node; vector<int> v1; //现将头结点加入 v1.push_back(root->val); ans.push_back(v1); int level=2; //level为偶数,这从右到左插入vector s.push(root); while(true){ vector<int> v; while(!s.empty()){ node = s.top(); s.pop(); if(level%2==0){ myPush(tmp, v, node->right); myPush(tmp, v, node->left); }else{ myPush(tmp, v, node->left); myPush(tmp, v, node->right); } } if(tmp.empty()) return ans; ans.push_back(v); s = tmp; level++; while(!tmp.empty()) tmp.pop(); } }};
0 0
- 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
- 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
- do{...}while(0)的意义和用法
- 招聘网站转型在即 面视网领跑行业创新
- vim哲学
- flex 浏览器不读取swf缓存文件
- iOS工程如何支持64-bit
- **(leetcode) Binary Tree Zigzag Level Order Traversal (tree)
- 大话设计模式之建造者模式
- 阅读高手编写的类似QQ聊天的服务端代码DAO设计总结
- NGUI中texture序列帧图片播放
- 我的一个Frame(java)
- 实体、协议、服务和服务访问点
- Linux下去掉^M的方法
- android avd 和PC键盘上的对应键
- 控制反转(IoC)与依赖注入(DI)