Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:公司财务报表软件 编辑:程序博客网 时间:2024/05/27 20:56
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) { deque<TreeNode*> Q1,Q2; vector<vector<int> > res; res.clear(); if (root == NULL) { return res; } Q1.push_back(root); vector<int> perRes; perRes.push_back(Q1.back()->val); res.push_back(perRes); int i = 0; while(!Q1.empty()) { Q2.clear(); while(!Q1.empty()) { TreeNode* pNode = Q1.front(); Q1.pop_front(); if (pNode->left != NULL) { Q2.push_back(pNode->left); } if (pNode->right != NULL) { Q2.push_back(pNode->right); } } perRes.clear(); i++; Q1 = Q2; if (i&1) { while(!Q2.empty()) { perRes.push_back(Q2.back()->val); Q2.pop_back(); } } else { while(!Q2.empty()) { perRes.push_back(Q2.front()->val); Q2.pop_front(); } } if (!perRes.empty()) { res.push_back(perRes); } } return res; }};
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
- 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
- Chapter 11 Network Programming [《CSAPP》 笔记]
- 【iOS开发-7】UILabel类的用法以及实例化对象的各种属性介绍
- time.h
- 在windows上安装easyphp和zencart
- Java Web开发使用配置文件链接数据库
- Binary Tree Zigzag Level Order Traversal
- kruskal算法
- 第二章 线性表 知识导图
- Chapter 1 构造过程抽象 [《SICP》 笔记]
- 数据结构第一章知识结构图
- try与catch异常捕获处理(说明)及案例
- 专题:基于ARM的嵌入式Linux系统开发主讲:刘老师
- 数据库范式
- 机器人行业