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 left to right, then right to left for the next level and alternate between).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
题意及分析:给出一个横向遍历的二叉树,要求给出 按照Z字形横向遍历的每一层 的点。这道题我们可以用stack来求解,简单来讲就是把每一层添加到一个stack里面,然后遍历输出结果的同时将遍历点的子节点添加到一个新的stack里面(先添加左子节点还是右子节点根据上一层添加的顺序),遍历完之后将新的stack赋值给stack进行下一层的遍历。代码如下:
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List> zigzagLevelOrder(TreeNode root) {
List> res=new ArrayList<>();
TreeNode node=root;
Stack stack =new Stack<>();
if(node!=null)
stack.push(node);
int leftOrRight=0;//0为先遍历左子树,1为右子树
while(!stack.isEmpty()){
Stack nextStack =new Stack<>();
List list=new ArrayList<>();
while(!stack.isEmpty()){
TreeNode temp=stack.pop();
list.add(temp.val);
if(leftOrRight==0){
if(temp.left!=null)
nextStack.push(temp.left);
if(temp.right!=null)
nextStack.push(temp.right);
}else{
if(temp.right!=null)
nextStack.push(temp.right);
if(temp.left!=null)
nextStack.push(temp.left);
}
}
if(leftOrRight==0)
leftOrRight=1;
else {
leftOrRight=0;
}
res.add(new ArrayList<>(list));
//System.out.println(list);
list.clear();
stack=(Stack) nextStack.clone ();;
nextStack.clear();
}
return res;
}
}
leetcode103JAVA_[LeetCode] 103. Binary Tree Zigzag Level Order Traversal Java相关推荐
- LeetCode 103. Binary Tree Zigzag Level Order Traversal
LeetCode 103. Binary Tree Zigzag Level Order Traversal Solution1:基于层次遍历的微改 /*** Definition for a bin ...
- 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 ...
- [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 ...
- 【Breadth-first Search 】103. Binary Tree Zigzag Level Order Traversal
输入:一颗二叉树 输出:这棵树的之字形层次遍历. 规则:之字形层次遍历是指第一层从左到右遍历,第二层从右到左遍历. 分析:这与102的区别就是有从左到右,从右到左遍历的交替过程.我们习惯从左到右遍历. ...
- LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...
- 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 ...
- Binary Tree Zigzag Level Order Traversal
跟之前的解法一模一样Binary Tree Level Order Traversal I,II 不赘述 public class Solution {public ArrayList<Arr ...
- leetcode第一刷_Binary Tree Zigzag Level Order Traversal
以出现的频率来看.树的层序遍历一定是考察的重点,除非工作人员想找题水数量. zigzag,还是有几道题的,层序的这个非常easy,假设是奇数层.reverse下面就可以.无他.我写的时候预计还不知道这 ...
- 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 ...
最新文章
- 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)
- 嵌入式CGI开发之旅——CGI环境变量
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
- Python.Scrapy.12-scrapy-source-code-analysis-part-2
- 5 个最受人喜爱的开源 Django 包
- mysql中整理设置__MySQL整理
- linux基础简介,Linux简介基础
- ffmpeg的学习-00
- 5分钟搞定AlertManager接入短信、语音等10+种通知渠道
- python文件,字符串,二进制的读写
- typedef用法总结(一)
- html限制显示字数其余用...代替,html实现钝角效果;html实现限制一行字数的显示,超出的部分用省略号(....)来代替...
- bootstrap有哪些常用组件
- 国际象棋游戏测试软件,Fritz国际象棋测试_CPUCPU评测-中关村在线
- MacOS上如何将MOV文件转换为MP4
- win7 SP1 64位 原版 百度网盘下载
- matlab2016 wavread,matlab 7.10里面的wavread函数不能打开.wav文件。我的wav文件是电脑自带的录音机录的...
- SOFA原理学习--sofa rpc入门示例
- JavaScript测试工具对决:Sinon.js vs testdouble.js
- 7个适合设计小白学的平面设计软件