LeetCode 103. Binary Tree Zigzag Level Order Traversal

Solution1:基于层次遍历的微改

/*** 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;vector<int> temp;queue<TreeNode* > my_que; //队列用来暂时存储二叉树节点my_que.push(root);int cur = 1, next = 0, symbol = 0;while (!my_que.empty()) {temp.push_back(my_que.front()->val);cur--;if (my_que.front()->left) {my_que.push(my_que.front()->left);next++;}if (my_que.front()->right) {my_que.push(my_que.front()->right);next++;}my_que.pop();if (cur == 0) {if (symbol % 2 == 1) {reverse(temp.begin(), temp.end());res.push_back(temp);} else res.push_back(temp);temp.clear();cur = next;next = 0;symbol++;}}return res;}
};

Solution2:用两个栈来保存数据,时间复杂度为O(n)O(n)O(n)

/*** 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 == NULL)return res;vector<int> temp;stack<struct TreeNode* > stack_node[2];//栈数组,数组的每个元素均是栈,栈的数据类型是TreeNode*int cur = 0, next = 1;stack_node[cur].push(root);while(!stack_node[0].empty() || !stack_node[1].empty()) {temp.push_back(stack_node[cur].top()->val);if(cur == 0) {if(stack_node[cur].top()->left != NULL)stack_node[next].push(stack_node[cur].top()->left);if(stack_node[cur].top()->right != NULL)stack_node[next].push(stack_node[cur].top()->right);} else {if(stack_node[cur].top()->right != NULL)stack_node[next].push(stack_node[cur].top()->right);if(stack_node[cur].top()->left != NULL)stack_node[next].push(stack_node[cur].top()->left);}stack_node[cur].pop();if(stack_node[cur].empty()) {res.push_back(temp);temp.clear();cur = 1 - cur;next = 1 - next;}}return res;}
};

LeetCode 103. Binary Tree Zigzag Level Order Traversal相关推荐

  1. LeetCode: 103. Binary Tree Zigzag Level Order Traversal

    题目 Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left ...

  2. leetcode103JAVA_[LeetCode] 103. Binary Tree Zigzag Level Order Traversal Java

    题目: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from lef ...

  3. [leetcode] 103. Binary Tree Zigzag Level Order Traversal @ python

    原题 Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left ...

  4. 【Breadth-first Search 】103. Binary Tree Zigzag Level Order Traversal

    输入:一颗二叉树 输出:这棵树的之字形层次遍历. 规则:之字形层次遍历是指第一层从左到右遍历,第二层从右到左遍历. 分析:这与102的区别就是有从左到右,从右到左遍历的交替过程.我们习惯从左到右遍历. ...

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

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

  6. leetcode【102,103】Binary Tree Level Order Traversal Binary Tree Zigzag Level Order Traversal

    问题描述(102): Given a binary tree, return the level order traversal of its nodes' values. (ie, from lef ...

  7. Binary Tree Zigzag Level Order Traversal

    跟之前的解法一模一样Binary Tree Level Order Traversal I,II  不赘述 public class Solution {public ArrayList<Arr ...

  8. leetcode第一刷_Binary Tree Zigzag Level Order Traversal

    以出现的频率来看.树的层序遍历一定是考察的重点,除非工作人员想找题水数量. zigzag,还是有几道题的,层序的这个非常easy,假设是奇数层.reverse下面就可以.无他.我写的时候预计还不知道这 ...

  9. LeetCode: 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

最新文章

  1. CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
  2. Qt中标准对话框实例,QObject::tr()的作用
  3. 软件工程导论 银行储蓄系统_银行计算机储蓄系统
  4. 遗传算法各Matlab工具箱简介
  5. Eclipse的maven插件最新地址
  6. [vue] vue中什么是递归组件?举个例子说明下?
  7. bootstrap在iframe框架中实现由子页面在顶级页面打开模态框(modal)
  8. linux下基于源码软件安装的那些事
  9. 出版物发行单位是指哪些_上海办理出版物经营许可证都需要哪些手续和资料?...
  10. JSP的JavaBean前的知识点
  11. 连不上网_技术丨电脑连不上网,我要如何冲浪?
  12. 怎样让git不用每次输入密码_不用输入WIFI密码 “一碰连”就能上网
  13. Android 自定义表格(第一行及第一列固定,其他列可滑动)
  14. 品牌设计与VI设计的不同之处
  15. Maximum Clique最大团问题
  16. 【原创】基于.NET的轻量级高性能 ORM - TZM.XFramework
  17. C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
  18. 计算机出现蓝屏怎么解决,教你电脑出现蓝屏是怎么回事
  19. 计算机应用基础练习题题(史上最全)
  20. using的三种用法

热门文章

  1. Windows7查看无线网络密码
  2. YOLO系列专题——YOLOv3理论篇
  3. 谜底是计算机的谜语英语,英语谜语(Riddle)  谜底
  4. 中海达数据怎么转rinex_Ashtech格式转换RINEX
  5. mysql序列化字段反序列化_序列化serialize()与反序列化unserialize()的实例
  6. linux程序中expr是什么意思,Linux中expr命令 (转)
  7. linux开发 stc_Linux环境下搭建STC单片机平台的指南
  8. java定义一个空数组_一个 Java 方法,最多能定义多少参数?
  9. bat 等待输入_深蓝词库转换 - 简单的输入法词库转换工具
  10. 多个select count 合并_Milvus查询合并机制