当前位置: 首页 > news >正文

LeetCode -- Binary Tree Level Order Traversal II

题目描述:
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]
]


输入一棵二叉树,从底层叶子节点开始,将每层的节点存成一个list,然后逐层将每个list存入结果集中。


思路:
由于逐层遍历,显然是BFS,不过最底层的叶子集合需要放在最上,每次添加结果集时,将当前层的节点集合插入在首位即可。




实现代码:




/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public IList<IList<int>> LevelOrderBottom(TreeNode root) 
    {
       var result = new List<IList<int>>();
    	if(root == null){
    		return result;
    	}
    	
    	var nodes = new List<TreeNode>(){root};
    	Bfs(nodes, ref result);
    	
    	return result;
    }


private void Bfs(List<TreeNode> parents, ref List<IList<int>> result)
{
    if(parents.Count == 0){
		return ;
	}
	
	var children = new List<TreeNode>();
	var nodes = new List<int>();
	for(var i = 0;i < parents.Count; i++){
		nodes.Add(parents[i].val);
		LoadChildren(parents[i], ref children);
	}
	result.Insert(0, nodes);
	Bfs(children, ref result);
}


private void LoadChildren(TreeNode node , ref List<TreeNode> nodes)
{
	if(node.left != null){
		nodes.Add(node.left);
	}
	if(node.right != null){
		nodes.Add(node.right);
	}
}


}


相关文章:

  • (ZT)一个美国文科博士的YardLife
  • LeetCode -- Clone Graph
  • Oracle 中的nvl() 函数 相当于Sql Server 的 isnull()
  • LeetCode -- Combinations
  • [IE编程] WebBrowser控件中设置页面的缩放
  • LeetCode -- Find the Duplicate Number
  • LeetCode -- Group Anagrams
  • LeetCode -- Kth Largest Element in an Array
  • 最近评论回复汇总
  • LeetCode -- Maximum Gap
  • OO系统分析员之路--用例分析系列(8)--如何编写一份完整的UML需求规格说明书[整理重发]...
  • LeetCode -- Maximum Subarray
  • ArcGIS Server Java ADF 案例教程 25
  • LeetCode -- Minimum Depth of Binary Tree
  • ArcGIS Server Java ADF 案例教程 26
  • php的引用
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《剑指offer》分解让复杂问题更简单
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • C# 免费离线人脸识别 2.0 Demo
  • classpath对获取配置文件的影响
  • Facebook AccountKit 接入的坑点
  • IndexedDB
  • JAVA并发编程--1.基础概念
  • Map集合、散列表、红黑树介绍
  • Redis的resp协议
  • Redis学习笔记 - pipline(流水线、管道)
  • Web Storage相关
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 给新手的新浪微博 SDK 集成教程【一】
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 诡异!React stopPropagation失灵
  • 基于HAProxy的高性能缓存服务器nuster
  • 简单实现一个textarea自适应高度
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 排序(1):冒泡排序
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ​flutter 代码混淆
  • # 达梦数据库知识点
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #define,static,const,三种常量的区别
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (C语言)逆序输出字符串
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二)构建dubbo分布式平台-平台功能导图
  • (六)Hibernate的二级缓存
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三) diretfbrc详解
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)详解PHP处理密码的几种方式
  • ***测试-HTTP方法
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149