【Leetcode】【Medium】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]
]
解题思路:
按层遍历,建立两个栈,一个保存当前结点,一个按照Z型保存下一层结点。
使用一个bool变量来标注每次读取子节点的方向;
代码:
/**
* 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> > ret;
stack<TreeNode*> cur_layer;
stack<TreeNode*> next_layer;
cur_layer.push(root);
bool dirt = false; if (!root)
return ret; while (!cur_layer.empty()) {
vector<int> layer_val;
while (!cur_layer.empty()) {
TreeNode* node = cur_layer.top();
cur_layer.pop();
layer_val.push_back(node->val);
if (dirt) {
if (node->right)
next_layer.push(node->right);
if (node->left)
next_layer.push(node->left);
} else {
if (node->left)
next_layer.push(node->left);
if (node->right)
next_layer.push(node->right);
}
}
ret.push_back(layer_val);
swap(cur_layer, next_layer);
dirt = !dirt;
}
return ret;
}
};
【Leetcode】【Medium】Binary Tree Zigzag Level Order Traversal的更多相关文章
- 【LeetCode】 Binary Tree Zigzag Level Order Traversal 解题报告
		
Binary Tree Zigzag Level Order Traversal [LeetCode] https://leetcode.com/problems/binary-tree-zigzag ...
 - 【leetcode】Binary Tree Zigzag Level Order Traversal
		
Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...
 - 【LeetCode】103. Binary Tree Zigzag Level Order Traversal
		
Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...
 - leetCode :103. Binary Tree Zigzag Level Order Traversal (swift) 二叉树Z字形层次遍历
		
// 103. Binary Tree Zigzag Level Order Traversal // https://leetcode.com/problems/binary-tree-zigzag ...
 - LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
		
103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...
 - Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
		
题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, ...
 - [LeetCode] Binary Tree Level Order Traversal 与 Binary Tree Zigzag Level Order Traversal,两种按层次遍历树的方式,分别两个队列,两个栈实现
		
Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes ...
 - LeetCode解题报告—— Unique Binary Search Trees & Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
		
1. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that ...
 - 37. Binary Tree Zigzag Level Order Traversal  &&  Binary Tree Inorder Traversal
		
Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...
 - 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)
		
从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...
 
随机推荐
- 九度oj题目1342:寻找最长合法括号序列II
			
题目1342:寻找最长合法括号序列II(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:886 解决:361 题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然 ...
 - FocusBI: 数据仓库 (原创)
			
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
 - 自定义控件如何给特殊类型的属性添加默认值 z(转)
			
自定义控件如何给特殊类型的属性添加默认值 z 定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚 标题有点那啥,但确实能表达我掌握此法后的心情. 写自定义控件时往往会有一个需求,就 ...
 - Android OpenGL教程-第三课【转】
			
第三课 给多边形上色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色. 这次增加的代码不算多. 增加一个color的buffer ...
 - 【Bigdecimal】
			
---恢复内容开始--- 大位数除法的时候注意1/3问题:异常:[Exception in thread "main" java.lang.ArithmeticException: ...
 - css样式、js2种方式 控制字符个数,多余的字用省略号代替
			
大家好,我是小菜 前端 ,技术不高,正在努力中充电!希望大家多多指教:css <div class="show">大家好,我是小菜 前端 ,技术不高,正在努力中充电!希 ...
 - 微信小程序准备阶段。(一)
			
--知识储备--HTML+JS+CSS (一)下载一个微信web开发工具(后续代码都会写在这里边)附上链接:https://mp.weixin.qq.com/debug/wxadoc/dev/devt ...
 - js密码强度校验
			
function AuthPasswd(string) { if(!string){ jQuery("#low").removeClass("org"); }) ...
 - 一、快速构建Springboot应用
			
1.基本概念 Spring的出现对于企业级应用来说是一个福音,它让企业级应用开发更加地简单.但是随着Spring的不断发展,它也慢慢变得越来越重.即使apache出品的maven工具能够使得项目创建. ...
 - python  os.popen 乱码问题
			
os.popen('ipconfig') 命令返回的结果在调试时乱码了: output1 = os.popen('ipconfig') o1=output1.read() 我猜这里输出的内容要和控制台 ...