博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
107 Binary Tree Level Order Traversal II
阅读量:6607 次
发布时间:2019-06-24

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

有点感动,这题在AS里写好之后复制过去一次AC了。 这种BFS的套路跟这题的一样,用queue,维护curNum和nextNum;我跟code ganker学会了这个套路,按照覃超的标准来说这代码是有点长的,但是现在已经形成记忆了,就不去修改了。思路还蛮清晰的。

public List
> levelOrderBottom(TreeNode root) { List
> res = new ArrayList<>(); if (root == null) return res; LinkedList
queue = new LinkedList<>(); List
cell = new ArrayList<>(); queue.add(root); int curNum = 1; int nextNum = 0; while (!queue.isEmpty()) { TreeNode node = queue.poll(); cell.add(node.val); curNum--; if (node.left != null) { queue.offer(node.left); nextNum++; } if (node.right != null) { queue.offer(node.right); nextNum++; } if (curNum == 0) { res.add(0, cell); curNum = nextNum; nextNum = 0; cell = new ArrayList<>(); } } return res; }复制代码


贴一下leetcode里面的人的简洁写法:https://discuss.leetcode.com/topic/7651/my-dfs-and-bfs-java-solution/2

public class Solution {    public List
> levelOrderBottom(TreeNode root) { Queue
queue = new LinkedList
(); List
> wrapList = new LinkedList
>(); if(root == null) return wrapList; queue.offer(root); while(!queue.isEmpty()){ int levelNum = queue.size(); List
subList = new LinkedList
(); for(int i=0; i

递归(我没看):

public class Solution {        public List
> levelOrderBottom(TreeNode root) { List
> wrapList = new LinkedList
>(); levelMaker(wrapList, root, 0); return wrapList; } public void levelMaker(List
> list, TreeNode root, int level) { if(root == null) return; if(level >= list.size()) { list.add(0, new LinkedList
()); } levelMaker(list, root.left, level+1); levelMaker(list, root.right, level+1); list.get(list.size()-level-1).add(root.val); } }复制代码

转载于:https://juejin.im/post/5a31340e6fb9a045055e2184

你可能感兴趣的文章
Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明【转】
查看>>
Linux下安装Python-3.3.2【转】
查看>>
STL杂记
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
Rust的闭包
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>
阿里架构师都在学的知识体系
查看>>
PAT (Advanced Level) 1028. List Sorting (25)
查看>>
【摘】人生苦短, 每日python
查看>>
【转】聚集索引和非聚集索引的区别
查看>>
【转】mac os 安装php
查看>>
Android -- OkHttp的简单使用和封装
查看>>
软件工程_第二次作业
查看>>
C# DllImport的用法
查看>>
ERP框架序设计与开发日记(下)
查看>>
Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
查看>>
no identities are available for signing
查看>>
javascript 和 jquery插件开发
查看>>
Linux Shell文件差集
查看>>