leetcode Binary Tree Zigzag Level Order Traversal 层序遍历 双队列
来源:互联网 发布:roseonly知乎 编辑:程序博客网 时间:2024/06/01 13:18
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.
题目意思是层序输出二叉树,注意就是Z字形输出,意思是偶数行要翻转,每一行存在一个vector中。
要是直接层序输出二叉树直接一个队列就行了,但是这个要每层的结果都要单独存起来,刚开始想的是每次存节点的深度,但是被自己绕晕了。
后来想的是,直接两个队列,第一个用来输出当前层,第二个用来保存下一层,等当前层都处理完成了,就把第二层赋给当前层。
class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root){ vector<vector<int>> res; if (!root) return res; vector<int> temp; queue<TreeNode *>Qnow; Qnow.push(root); TreeNode *node; int dep = 0;//用两个队列,Qnow和Qnext Qnow是当前的队列,Qnext是新加入的队列,等Qnow全部处理完表示这一层的都处理完了,就把Qnext给Qnow,这样就是一层一层的输出了 while (!Qnow.empty()) { temp.clear(); queue<TreeNode *>Qnext; while (!Qnow.empty()) { node = Qnow.front(); temp.push_back(node->val); Qnow.pop(); if (node->left) Qnext.push(node->left);//先加左孩子 if (node->right) Qnext.push(node->right);//再加右孩子 } dep++; if (dep%2==0)//偶数行翻转 { reverse(temp.begin(),temp.end()); } res.push_back(temp); Qnow = Qnext; } return res; } };
0 0
- leetcode Binary Tree Zigzag Level Order Traversal 层序遍历 双队列
- 【leetcode 层序遍历】Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal,bfs,层序遍历
- 【LeetCode】Binary Tree Zigzag Level Order Traversal--- 层序遍历二叉树
- 【leetcode 层序遍历】Binary Tree Level Order Traversal
- 【leetcode 层序遍历】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal(层序遍历)
- 【leetcode】102. Binary Tree Level Order Traversal【java】使用队列实现层序遍历
- 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
- 一个方法实现加减乘除
- VC修改窗口属性 GetWindowLong(), SetWindowLong()
- android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0
- 【7.11】为Date类重载“+”运算符,实现在某一个日期上(月、日、年)加一个天数。
- 【UNIX网络编程】客户/服务器程序设计范式
- leetcode Binary Tree Zigzag Level Order Traversal 层序遍历 双队列
- Spark数据存储到mysql中
- listview显示多布局的时候遇到的问题
- [Books] 《JavaScript权威指南》 -- #1~5
- OJ刷题我想放假
- 修改Eclipse的内存值,防止程序无响应
- VS中使用dumpbin命令查询dll中的导出函数
- jquery动态元素绑定事件
- OXY OPENCART 商城自适应主题模板 ABC-0020-01