leetCode练习(107)
来源:互联网 发布:手机音频制作软件 编辑:程序博客网 时间:2024/04/30 00:49
题目:Binary Tree Level Order Traversal II
难度:easy
问题描述:
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3]]
解题思路:
从低到高按层输出二叉树元素。从根节点使用广度搜索BFS,储存每层的节点,最后反向输出即可。
代码如下:
/** * 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<List<Integer>> levelOrderBottom(TreeNode root) { Stack<List<Integer>> res=new Stack<>(); Queue<TreeNode> queue=new LinkedList<>(); if(root==null){ return res; } queue.add(root); bfs(res,queue); List<List<Integer>> list=new ArrayList<>(); while(!res.isEmpty()){ list.add(res.pop()); } return list; } private void bfs(List<List<Integer>> res,Queue<TreeNode> queue){ int len=queue.size(); if(len==0){ return; } TreeNode t; List<Integer> list=new ArrayList<>(); for(int i=0;i<len;i++){ t=queue.poll(); list.add(t.val); if(t.left!=null){ queue.add(t.left); } if(t.right!=null){ queue.add(t.right); } } res.add(list); bfs(res,queue); }}
0 0
- leetCode练习(107)
- leetCode练习(7)
- leetCode练习(9)
- leetCode练习(2)
- leetCode练习(14)
- leetCode练习(3)
- leetCode练习(4)
- leetCode练习(19)
- leetCode练习(18)
- leetCode练习(5)
- leetCode练习(15)
- leetCode练习(20)
- leetCode练习(21)
- leetCode练习(16)
- leetCode练习(17)
- leetCode练习(11)
- leetCode练习(24)
- leetCode练习(22)
- bzoj 3932 [CQOI2015]任务查询系统 可持久化二维线段树
- NOIP2016考前做题(口胡)记录
- [NOIP模拟题][DP][高效算法][RMQ][子集]
- NOIP2016提高A组集训第1场【JZOJ4822】完美标号
- yii表单格式
- leetCode练习(107)
- CCF 201612-2 火车购票
- CSS3 变形与动画
- 项目中学习---avalon表格渲染函数的了解
- Dubbo服务集群,常见容错机制:failover ,failsafe,failfase ,failback,forking
- 跳槽之路
- 【ZOJ 1562和 BZOJ 1053】【反素数】【求n以内的因子最多的那个数(即不超过n的最大反素数)】
- C# 断言使用
- STL标准库中的算法函数