【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
2015-08-10 07:30
991 查看
【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).For example:
Given binary tree {3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
题目大意
给定一棵二叉树自底向下进行层序遍历。解题思路
对树进行层序遍历,每层的结果放在结果链表的头部。代码实现
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
算法实现类
import java.util.*; public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> list = new LinkedList<>(); if (root == null) { return list; } Deque<TreeNode> cur = new LinkedList<>(); Deque<TreeNode> nxt = new LinkedList<>(); Deque<TreeNode> exc = new LinkedList<>(); TreeNode tmp; cur.add(root); while (!cur.isEmpty()) { List<Integer> layout = new ArrayList<>(); while (!cur.isEmpty()) { tmp = cur.remove(); if (tmp.left != null) { nxt.add(tmp.left); } if (tmp.right != null) { nxt.add(tmp.right); } layout.add(tmp.val); } exc = cur; cur = nxt; nxt = exc; list.add(0, layout); } return list; } }
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。特别说明
欢迎转载,转载请注明出处【/article/1343387.html】
相关文章推荐
- OSChina 周一乱弹 —— 程序员进阶之路
- 黑马程序员——Java基础工具类---Collections、Arrays、超级for循环、静态导入、方法可变参数
- 黑马程序员——Java基础语法---流程控制与函数
- 【黑马程序员】分类的概念及使用流程
- 黑马程序员——Java基础---反射Class类、Constructor类、Field类
- 《程序员的呐喊》读书笔记(下)
- 黑马程序员——其他6:枚举
- 黑马程序员——java学习12(毕20--21)——IO_2
- 剑指Offer——面试小提示(持续更新中)
- PHP的关于变量和日期处理的一些面试题目整理
- PHP的文件操作与算法实现的面试题示例
- 黑马程序员——Java基础---集合(二)------Map集合
- 关注程序员健康,刻不容缓
- 黑马程序员——23, Properties,Runtime,Date类,Math类,
- 黑马程序员——JAVA内部类概述与内部被继承与继承其他类的问题
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- 【程序员眼中的统计学(11)】卡方分布的应用
- 面试知识储备:新浪微博OAuth2.0授权认证
- 编程之美----2.21 只考加法的面试题
- Java常用排序算法/程序员必须掌握的8大排序算法