博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binary Tree Zigzag Level Order Traversal,z字形遍历二叉树,得到每层访问的节点值。...
阅读量:5312 次
发布时间:2019-06-14

本文共 1309 字,大约阅读时间需要 4 分钟。

问题描述:

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]]

算法分析:和前面问题类似。

public class BinaryTreeZigzagLevelOrderTraversal {	 public List
> zigzagLevelOrder(TreeNode root) { List
list = new ArrayList<>(); List
> res = new ArrayList<>(); if(root == null) { return res; } Stack
s1 = new Stack<>(); Stack
s2 = new Stack<>(); s1.push(root); while(!s1.isEmpty() || !s2.isEmpty()) { while(!s1.isEmpty()) { TreeNode temp = s1.pop(); if(temp.left != null) { s2.push(temp.left); } if(temp.right != null) { s2.push(temp.right); } list.add(temp.val); } if(list.size() != 0) res.add(list); list = new ArrayList<>(); while(!s2.isEmpty()) { TreeNode temp = s2.pop(); if(temp.right != null) { s1.push(temp.right); } if(temp.left != null) { s1.push(temp.left); } list.add(temp.val); } if(list.size() != 0) res.add(list); list = new ArrayList<>(); } return res; }}

  

转载于:https://www.cnblogs.com/masterlibin/p/5910492.html

你可能感兴趣的文章
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
【模板】对拍程序
查看>>
【转】redo与undo
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>