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

LeetCode -- Binary Tree Paths

题目描述:


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"]




输入1个二叉树,打印出所有从根到叶子的路径。




思路:
1个基本的DFS题,直接从根对树做DFS,到叶子时收集路径即可。




实现代码:




/**
 * 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<string> BinaryTreePaths(TreeNode root) 
    {
        if(root == null){
    		return new List<string>();
    	}
    	
    	var ret = new List<string>();
    	var p = "";
    	Dfs(root, ref ret, p);
    	
    	return ret;
    }




    private void Dfs(TreeNode node, ref List<string> result, string path)
    {
    	if(node == null){
    		return;
    	}
    	
    	if(node.left == null && node.right == null)
    	{
    		Append(ref path, node.val);
    		
    		result.Add(path);
    		return;
    	}
    	
    	var nextPath = path;
    	Append(ref nextPath, node.val);
    	
    	Dfs(node.left, ref result, nextPath);
    	Dfs(node.right, ref result, nextPath);
    }
    
    private void Append(ref string path,int val){
    	if(path == ""){
    		path = val.ToString();
    		return;
    	}
    	path = path + "->"+ val.ToString();
    }


}


相关文章:

  • 参加OPUG第二次活动的有关BPM主题聚会记
  • LeetCode -- Bulls and Cows
  • 如何修改Windows CE的平台类型
  • LeetCode -- Game of Life
  • 黄舒骏,改变1995
  • LeetCode -- H-Index II
  • vim插件 ctags 和 taglist 的安装和使用
  • LeetCode -- Longest Increasing Subsequence
  • LeetCode -- Serialize and Deserialize Binary Tree
  • Ubuntu中用apt安装和卸载软件
  • LeetCode -- Single Number III
  • Linux 常用C函数(内存及字符串操作篇2)
  • LeetCode -- Subsets II
  • WCDMA与CDMA2000网络结构比较
  • LeetCode -- Integer to English Words
  • .pyc 想到的一些问题
  • go append函数以及写入
  • Hibernate最全面试题
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • markdown编辑器简评
  • nodejs:开发并发布一个nodejs包
  • TCP拥塞控制
  • 从tcpdump抓包看TCP/IP协议
  • 从零开始学习部署
  • 构建工具 - 收藏集 - 掘金
  • 机器学习中为什么要做归一化normalization
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 利用jquery编写加法运算验证码
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 那些年我们用过的显示性能指标
  • 如何合理的规划jvm性能调优
  • 收藏好这篇,别再只说“数据劫持”了
  • 【干货分享】dos命令大全
  • 7行Python代码的人脸识别
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​linux启动进程的方式
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #include
  • (1)STL算法之遍历容器
  • (175)FPGA门控时钟技术
  • (BFS)hdoj2377-Bus Pass
  • (js)循环条件满足时终止循环
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)Linux下编译安装log4cxx
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Core WebAPI中封装Swagger配置
  • .net core 控制台应用程序读取配置文件app.config
  • .Net IE10 _doPostBack 未定义
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net快速开发框架源码分享