当前位置: 首页 > 编程日记 > 正文

二叉树的路径(根节点到叶节点)Binary Tree Paths

为什么80%的码农都做不了架构师?>>>   hot3.png

问题:

Given a binary tree, return all root-to-leaf paths.

For example, given the following binary tree:

   1/   \
2     3\5

All root-to-leaf paths are:

["1->2->5", "1->3"]

解决:

① 简单的二叉树遍历,遍历的过程中记录之前的路径,一旦遍历到叶子节点便将该路径加入结果中。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution { //17ms
    List<String> res = new ArrayList<>();
    public List<String> binaryTreePaths(TreeNode root) {
        if(root != null) findPath(root,String.valueOf(root.val));
        return res;
    }
    public void findPath(TreeNode node,String path){
        if(node.left == null && node.right == null) res.add(path);
        if(node.left != null) findPath(node.left,path + "->" + node.left.val);
        if(node.right != null) findPath(node.right,path + "->" + node.right.val);
    }
}

② 进化版

public class Solution { //15ms
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res = new ArrayList<String>();
        if (root == null) return res;
        getPath(root, "", res);
        return res;
    }
    public void getPath(TreeNode root, String path, List<String> res) {
        if (root.left == null && root.right == null)
            res.add(path + root.val);
        else {
            if (root.left != null) getPath(root.left, path + root.val + "->", res);
            if (root.right != null) getPath(root.right, path + root.val + "->", res);
        }
    }
}

【注意】return影响效率

public class Solution { //15ms
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> res = new ArrayList<String>();
        if (root == null) return res;
        getPath(root, "", res);
        return res;
    }
    public void getPath(TreeNode root, String path, List<String> res) {
        if (root.left == null && root.right == null){
            res.add(path + root.val);
            //return; 加上return耗时为18ms
        }
        if (root.left != null) getPath(root.left, path + root.val + "->", res);
        if (root.right != null) getPath(root.right, path + root.val + "->", res);
    }
}

转载于:https://my.oschina.net/liyurong/blog/1505090

相关文章:

股市币市:数据分析与交易所公告(20190226)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

零基础怎么学UI设计

互联网的快速发展&#xff0c;给很多企业和求职人员有了更多的创业和工作机会&#xff0c;近几年&#xff0c;UI设计行业招聘需求人数就在不断上涨&#xff0c;越来越多的人想转行做UI设计。那么零基础怎么学UI设计?有哪些简单有效的学习方法?我们来看看下面的详细介绍。 零基…

原创:嵌入图片的HTML内容在FLASH AS3中正确显示的最佳解决方案

做一个项目&#xff0c;遇到这个该死的问题&#xff0c;尝试了几乎所有解决方法&#xff0c;几近崩溃&#xff0c;终于找到完美解决方案。因为在网上&#xff0c;无论中文还是英文&#xff0c;搜索了无数遍&#xff0c;都没人给出正确答案&#xff0c;所以&#xff0c;在此记下…

总结六条对我们学习Linux系统有用的忠告

接触linux需要的是端正自己的态度&#xff0c;这个玩意可不是一天两天就能拿得下的。学习个基础&#xff0c;能装系统、能装常见服务、能编译、能配置存储空间、能配置系统参数、能简单查看系统负载等基本够用。但这些只保证能做机房运维&#xff0c;真正和进阶的运维工作不在机…

一份来自上海院校的考研预调剂系统已开放名单!

距离 19 考研初试成绩的公布已经有一段时间了&#xff0c;成绩不错的同学就安心准备复试吧&#xff0c;全力备考&#xff0c;一定要拿到属于你的录取通知书&#xff01;成绩不满意&#xff0c;擦线或者排名靠后的同学&#xff0c;复试、调剂两手准备&#xff0c;注定咱们要花更…

【Python培训基础知识】Python生成器函数

对于程序而言&#xff0c;内存也是很重要的&#xff0c;因为程序中很多数据都是保存在内存中的&#xff0c;如果内存中存储的数据过多&#xff0c;那么系统就会崩溃&#xff0c;这是人们不希望发生的。 可以采用生成器推导式来解决内存不足的问题。例如&#xff0c;利用生成器推…

普华永道重磅报告:决定未来的八大核心科技

在新兴科技高速发展的今天&#xff0c;各个技术风口你方唱罢我登场&#xff0c;把我们裹挟其中&#xff0c;无论是创业者&#xff0c;还是大公司的决策人&#xff0c;都需要时刻判断趋势。 也许每个人心里都在想类似的问题&#xff1a;“这些人工智能技术会如何影响我们的物联网…

[转帖][实用]Linux 释放内存方法

先看看内存使用状况[rootnode1 ~]# free -mtotal used free shared buffers cachedMem: 8004 6557 1446 0 163 5630-/ buffers/cache: 763 7240Swap: 1983 0 1983把内存里的数据暂时写到硬盘里[rootnode1 ~]# sync修改 /proc/sys/vm/drop_caches文件[rootnode1 ~]# echo 3 >…

股市币市:数据分析与交易所公告(20190227)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

【Web前端培训】预解析(变量提升)

今天千锋小编为大家介绍一下一下JavaScript中的预解析(变量提升)。从什么是预解析及变量的预解析和函数的预解析及加载流程进行学习(注意&#xff1a;我们这里说的ES5中的预解析)。 什么是解析 首先代码执行肯定需要一个执行环境&#xff0c;浏览器会提供一个供javaScript执行的…

如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!

我们生活在一个快节奏的时代里&#xff0c;每天除了辛苦的提升自己&#xff0c;为生活打拼之外&#xff0c;偶尔的放松去看场电影也是必要的。可是能够抽出的时间有限&#xff0c;选择看哪部电影就是一个挠头的问题了。 幸好&#xff0c;有类似猫眼电影、豆瓣电影、淘票票这样…

【Java学习笔记之五】java数组详解

数组 概念 同一种类型数据的集合。其实数组就是一个容器。 数组的好处 可以自动给数组中的元素从0开始编号&#xff0c;方便操作这些元素。 格式1&#xff1a; 元素类型[] 数组名 new 元素类型[元素个数或数组长度]; 示例&#xff1a;int[] arr new int[5]; 格式2&…

参加Java培训需要注意什么

java编程语言对于零基础的同学来说&#xff0c;想要自学是非常困难的&#xff0c;因为java学习包含很多阶段&#xff0c;所以零基础的小白和初学者报java培训班学习是非常有必要的&#xff0c;下面小编就给大家详细的介绍一下参加Java培训需要注意什么? 参加Java培训需要注意什…

写得不错的几篇C/C++博客

转&#xff1a;http://blog.csdn.net/rubyzhudragon/category/562309.aspx 转载于:https://www.cnblogs.com/xinzhuangzi/archive/2010/08/22/4100543.html

股市币市:数据分析与交易所最新公告(20190228)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

优化webpack配置

happypack happypack可以加快rebuild的速度 在开发的时候&#xff0c;需要将babel-loader替换成happypack/loader{test: /\.(js|jsx)$/,exclude: /(node_modules|vendor)/,loader: isDev ? happypack/loader : babel-loader } 同时添加插件, 根据需要定义不同的babel配置&…

Java多线程学习处理高并发问题

在程序的应用程序中&#xff0c;用户或请求的数量达到一定数量&#xff0c;并且无法避免并发请求.由于对接口的每次调用都必须在返回时终止&#xff0c;因此&#xff0c;如果接口的业务相对复杂&#xff0c;则可能会有多个用户.调用接口时&#xff0c;该用户将冻结. 以下内容将…

防止表单多次提交

防止表单多次提交 //jQuery①<script type"text/javascript"> $("input:submit").each(function() { var srcclick $(this).attr("onclick"); if(typeof(srcclick)"function"){ $(this).click(function() { if (srcclick()) { …

Visual Studio环境变量使用实例:使用环境变量来组织project

前言 在前一篇文章Visual Studio中的环境变量(以Visual Studio 2013为例)中介绍了VS中的环境变量&#xff0c;本文将以实际样例说明怎样合理使用这些环境变量来组织VCproject。使用vs环境变量来组织project 通常一个解决方式包括多个项目。这些项目相互之间可能存在依赖关系。以…

股市币市:数据分析与交易所最新公告(20190301)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

Python常用6个技术网站汇总分享!

Python是一门面向对象的编程语言&#xff0c;它具有丰富和强大的库&#xff0c;能够把用其他语言编写的各种模块轻松地联结在一起&#xff0c;因此也常被称为“胶水语言”。Python技术会随着互联网的不断发展一直迭代和更新&#xff0c;所以需要Python开发的人员一直保持一个学…

devstack —— 单机部署 OpenStack 体验

2019独角兽企业重金招聘Python工程师标准>>> devstack 是一个用来快速部署 OpenStack 的脚本。 使用非常简单&#xff0c;执行 ./stack.sh 即可&#xff0c;但是在安装过程中遇到一些问题会中断&#xff0c;通过不断修正尝试&#xff0c;事后在这里记录一下&#xf…

使用ultraedit和cl编译器打造简易c/c++开发环境

在visual c下&#xff0c;每编写一个简单的小程序&#xff0c;就得生成一大串中间文件&#xff0c;另人十分的不爽。下面提供一个新的编写c/c程序的方法&#xff1a;   &#xff08;1&#xff09;&#xff0c;下载utraledit-32编辑器&#xff0c;推荐v11.  &#xff08;2&a…

股市币市:数据分析与交易所最新公告(20190302)

BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https://coinmarketcap.com/currencies/bitcoin/ 数字货币交易所公告 BigOne 2019/03/01 BigONE 用户体验月&#xff1a;有奖寻建议 &#xff0c;重金找 BUG …

分享五款java学习辅助工具,总有你用的上的~

想要学好java技术&#xff0c;除了自身的努力&#xff0c;辅助工具也不缺少&#xff0c;辅助工具可以帮助大家在今后的工作中可以提高工作效率&#xff0c;下面小编就来分享五款java学习辅助工具&#xff0c;总有你用的上的~ 五款java学习辅助工具&#xff1a; 1、Eclipse Ecli…

如何利用 C# 爬取「猫眼电影专业版:票房」数据!

在现代生活中&#xff0c;看电影已经成为大家的一种休闲方式。 前几天&#xff0c;我们介绍了 如何利用 C# 爬取「猫眼电影&#xff1a;热映口碑榜」及对应影片信息&#xff01;&#xff0c;通过这份“热映口碑”榜单&#xff0c;我们可以看到大家对当前热播电影的评价&#x…

MOSS的CSS样式说明,一个老外总结的

MOSS的CSS样式说明&#xff0c;一个老外总结的 http://www.heathersolomon.com/content/sp07cssreference.htm 转载于:https://www.cnblogs.com/greeny/archive/2010/09/03/1817027.html

什么是整型?Python整型详细介绍

整数类型(int)简称整型&#xff0c;它用于表示整数&#xff0c;例如&#xff0c;100、2016等。整型字面值的表示方式有四种&#xff0c;分别是十进制、二进制(以“0B”或“0b”开头)、八进制(以数字“0”开头)和十六进制(以“0x”或“0X”开头)。 Python的整型可以表示的范围是…

hibernate.hbm2ddl.auto的value

Hibernate 配置参数hibernate.hbm2ddl.auto Hibernate中的配置文件&#xff1a; <properties> <property name"hibernate.hbm2ddl.auto" value"create" /> </properties> 参数说明&#xff1a; validate 加载hibernate时…

linux的管道

1 管道的本质是进程间通信的一种手段 这个命名是非常形象的&#xff0c;数据从管道的一端流向管道的另外一端&#xff0c;然后另外一个进程等在那里&#xff0c;只要有数据了就进行处理。 2 管道连接的多个命令是同时启动的 也就是说&#xff0c;管道连接的多个命令的进程之间是…