2020-05-24

1.题目描述

二叉树的锯齿形层次遍历

2.题解

对于层次遍历而言,就是广度优先,由于题目要求奇数层逆序,我们可以
1)使用双端队列,奇偶性不同,则出入队列方式不同。
2)对于偶数节点,可以将当前层所得的结果逆序。

3.代码

103

/*** Definition for a binary tree node.* 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;if (!root) return res;deque<TreeNode*> myque;myque.push_back(root);int height=1;while (!myque.empty()){int cnt=myque.size(); // 当前层的节点数vector<int> tmp;while (cnt--){if (height&1){ // 如果是奇数层TreeNode *p=myque.front();myque.pop_front();tmp.push_back(p->val);if (p->left) myque.push_back(p->left);if (p->right) myque.push_back(p->right);}else{TreeNode *p=myque.back();myque.pop_back();tmp.push_back(p->val);if (p->right) myque.push_front(p->right);if (p->left) myque.push_front(p->left);}}height++;res.push_back(tmp);}return res;}
};
/*** Definition for a binary tree node.* 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;if (!root) return res;queue<TreeNode*> myque;myque.push(root);int height=1;while (!myque.empty()){int cnt=myque.size(); // 当前层的节点数vector<int> tmp;while (cnt--){TreeNode *p=myque.front();myque.pop();tmp.push_back(p->val);if (p->left) myque.push(p->left);if (p->right) myque.push(p->right);}if (!(height&1)){ // 表明是偶数层 reverse(tmp.begin(),tmp.end());}height++;res.push_back(tmp);}return res;}
};

102

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res;if (!root) return res;queue<TreeNode*> myque;myque.push(root);while (!myque.empty()){int cnt=myque.size(); // 当前层的节点数vector<int> tmp;while (cnt--){TreeNode* p=myque.front();myque.pop();tmp.push_back(p->val);if (p->left) myque.push(p->left);if (p->right) myque.push(p->right);}res.push_back(tmp);}return res;}
};

103. 二叉树的锯齿形层次遍历/102. 二叉树的层序遍历相关推荐

  1. LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)

    103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...

  2. lintcode二叉树的锯齿形层次遍历 (双端队列)

    题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出 ...

  3. 103.二叉树的锯齿形层次遍历:DFS解法

    Time: 20190830 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,n ...

  4. 【Leetcode】103. 二叉树的锯齿形层次遍历

    题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...

  5. 【LeetCode】103# 二叉树的锯齿形层次遍历

    题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], ...

  6. 103. 二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3   ...

  7. LeetCode 103. 二叉树的锯齿形层次遍历(BFS / 双栈)

    1. 题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7] ...

  8. leetcode 103. 二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \ ...

  9. 二叉树的锯齿形层次遍历—leetcode103

    给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3/ \ ...

最新文章

  1. 企业级微服务框架落地
  2. SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,...
  3. matlab 多项式拟合 ployval
  4. Java入门之初识设计模式---单列模式
  5. 远离客户陷阱小故事 转
  6. Handler基本概念
  7. python三维网格图_python-3D网格之间的Hausdorff距离
  8. python map函数1分钟数据生成5分钟_用map函数来完成Python并行任务的简单示例
  9. 混凝土弹性波速计算公式_混凝土强度与应力波速相关性研究
  10. 事件管理和问题管理,配置管理和变更管理的区别
  11. 微信H5开发问题集锦
  12. 30字的完美个人简历
  13. python3的print()函数的用法图文讲解
  14. 基于rdkit将smiles转换为smarts
  15. 重装系统要花钱?教你免费一键重装win10系统
  16. 共享电单车属于哪个部门管理_对小区物业服务不满找谁投诉?哪个部门负责管理...
  17. java jts点到面的距离_jts-空间索引
  18. c#使用PortableDeviceApiLib读取便携式设备(WPD:Windows Portable Devices)信息
  19. matlab数据格式转换
  20. CesiumforUnrealQuickstart_译

热门文章

  1. python while循环if_python – 使用if语句时陷入while循环
  2. Gaze Estimation笔记——data normalization
  3. 送你一个在线机器学习网站,真香!
  4. 深度综述|基因与疾病关系研究的百年进展
  5. ImageGP新上几个小工具
  6. FCPX Full Access - Titles Bundle for Mac FCPX标题字幕插件捆绑包
  7. NOI图论算法:网络流
  8. 第4课 防卫导弹(第十章 动态规划--DP)
  9. 【chorme插件开发】第三节:开发html的展示类型插件实例
  10. android textview 背景图片,Android—TextView 背景颜色与背景图片设置