Leetcode_binary-tree-zigzag-level-order-traversal (updated c++ and python version)
来源:互联网 发布:sci是数据库还是期刊 编辑:程序博客网 时间:2024/05/22 01:56
地址:http://oj.leetcode.com/problems/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]]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
跟上一题很像,基本数据结构模拟题。之字形层次遍历,那么设置一个游标bool量flag,对存入vector的值隔一次翻转一次。
请对比和上一题代码异同: http://blog.csdn.net/flyupliu/article/details/21483317
参考代码:
/** * 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; bool flag = true; if(!root) { return res; } else { queue<TreeNode*>q; q.push(root); while(!q.empty()) { int size = q.size(); vector<int> vec; while(vec.size() < size) { TreeNode* root = q.front(); q.pop(); vec.push_back(root->val); if(root->left) { q.push(root->left); } if(root->right) { q.push(root->right); } } flag = !flag; if(flag) { reverse(vec.begin(), vec.end()); } res.push_back(vec); } } return res; }};
//SECOND TRAILclass Solution {public:vector<vector<int> > zigzagLevelOrder(TreeNode *root) {vector<vector<int> >ans;if(!root)return ans;queue<TreeNode*>treeq;treeq.push(root);TreeNode* cur = NULL;bool flag = true;while(!treeq.empty()){int sz = (int)treeq.size();vector<int>vec;while(sz--){cur = treeq.front();treeq.pop();vec.push_back(cur->val);if(cur->left)treeq.push(cur->left);if(cur->right)treeq.push(cur->right);}if(!flag)reverse(vec.begin(), vec.end());ans.push_back(vec);flag = !flag;}return ans;}};
python :
# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:# @param root, a tree node# @return a list of lists of integersdef zigzagLevelOrder(self, root):if not root:return [];ans = []q = [root]flag = Truewhile q:sz = len(q)level = []while sz:sz -= 1cur = q.pop()if cur.left:q.insert(0, cur.left)if cur.right:q.insert(0, cur.right)level.append(cur.val)if flag:ans.append(level)else:ans.append(level[::-1])flag = not flagreturn ans
0 0
- Leetcode_binary-tree-zigzag-level-order-traversal (updated c++ and python version)
- Leetcode_binary-tree-level-order-traversal (updated c++ and python version)
- LeetCode_binary-tree-zigzag-level-order-traversal
- Leetcode_Binary Tree Level Order Traversal
- LeetCode_binary-tree-level-order-traversal
- *Leetcode_binary-tree-maximum-path-sum (updated c++ and python version)
- Leetcode_binary-tree-level-order-traversal-ii
- leetcode_Binary Tree Level Order Traversal _easy
- LeetCode_Binary Tree Level Order Traversal II
- 【Leetcode】Binary Tree Level Order Traversal I/II AND Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal Leetcode Python
- 【leetCode】Binary Tree Zigzag Level Order Traversal python实现
- 【Leetcode】【python】Binary Tree Zigzag Level Order Traversal
- [C++]LeetCode: 101 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
- File_Find
- Unity3D优化总结
- 一步步学习SPD2010--第十一章节--处理母版页(1)--理解母版页
- UVa11776 - Oh Your Royal Greediness!
- C++类中成员变量初始化
- Leetcode_binary-tree-zigzag-level-order-traversal (updated c++ and python version)
- php函数笔记
- cocos2dx3.0rc使用cocos-console在win7下运行win32和android
- WinRT的App间共享数据
- 模糊推理
- Android 防止控件被重复点击
- Android之service一些基础回顾
- Java2d画直角坐标系
- 引进JDK到MyEclipse