问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4082 访问。

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

输入:

1
 /   \
2     3
 \
  5

输出: ["1->2->5", "1->3"]

解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3


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

Note: A leaf is a node with no children.

Input:

1
 /   \
2     3
 \
  5

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

Explanation: All root-to-leaf paths are: 1->2->5, 1->3


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4082 访问。

public class Program {public static void Main(string[] args) {var root = new TreeNode(1) {left = new TreeNode(2) {right = new TreeNode(5)},right = new TreeNode(3)};var res = BinaryTreePaths(root);ShowArray(res);root.right.right = new TreeNode(4);res = BinaryTreePaths2(root);ShowArray(res);Console.ReadKey();}private static void ShowArray(IList<string> array) {foreach(var num in array) {Console.Write($"{num} ");}Console.WriteLine();}public static IList<string> BinaryTreePaths(TreeNode root) {var list = new List<string>();if(root != null) {var left = BinaryTreePaths(root.left);var right = BinaryTreePaths(root.right);var current = root.val.ToString();if(left.Count == 0 && right.Count == 0) {list.Add(current);} else {if(left.Count != 0) {foreach(var str in left) {list.Add(current + "->" + str);}}if(right.Count != 0) {foreach(var str in right) {list.Add(current + "->" + str);}}}}return list;}public static IList<string> BinaryTreePaths2(TreeNode root) {var res = new List<string>();if(root == null) return res;TreePaths(res, root, root.val + "");return res;}public static void TreePaths(IList<string> res, TreeNode root, string path) {if(root.left == null && root.right == null)//若左右子节点都为空,本次路径结束,直接添加到 Listres.Add(path);if(root.left != null)//若左子节点不为空,则将左子节点拼接之后参与下次递归TreePaths(res, root.left, path + "->" + root.left.val);if(root.right != null)//若右子节点不为空,则将右子节点拼接之后参与下次递归TreePaths(res, root.right, path + "->" + root.right.val);}public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) { val = x; }}}

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4082 访问。

1->2->5 1->3
1->2->5 1->3->4

分析:

显而易见,以上2种算法的时间复杂度均为:  。

C#LeetCode刷题之#257-二叉树的所有路径(Binary Tree Paths)相关推荐

  1. C#LeetCode刷题之#100-相同的树(Same Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4066 访问. 给定两个二叉树,编写一个函数来检验它们是否相同. ...

  2. 【leetcode刷题笔记】Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 题解 ...

  3. C#LeetCode刷题-树

    树篇 # 题名 刷题 通过率 难度 94 二叉树的中序遍历 61.6% 中等 95 不同的二叉搜索树 II 43.4% 中等 96 不同的二叉搜索树 51.6% 中等 98 验证二叉搜索树 22.2% ...

  4. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  5. ​LeetCode刷题实战584:寻找用户推荐人

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. ​LeetCode刷题实战577:员工奖金

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  8. leetcode刷题记录总结-7.二叉树

    文章目录 零.二叉树理论 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二叉树的存储方式 二叉树的遍历方式 二叉树的定义 总结 一.二叉树的遍历 [144. 二叉树的前序遍历 ](h ...

  9. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. 人群密度估计--Crowd Counting Via Scale-adaptive Convolutional Nerual Network
  2. Mapreuduce实现网络数据包的清洗工作
  3. python个人博客网站的搭建说明书_个人博客搭建线上实施方案
  4. 简书=鸡汤?爬取今日看点数据:1916篇简书热门文章可视化
  5. 数据库相关的论文笔记
  6. python getattr_详解 Python 的二元算术运算,为什么说减法只是语法糖?
  7. Quarkus on OpenJ9 JVM和资源消耗
  8. messagebox 全部使用_商业篇 | 使用python开发性格分析工具卖钱
  9. 使用rem单位布局的时候有什么好处_好程序员web前端技术分享移动端页面布局
  10. LT8619B 产品功能概述 HDMI1080P转BT1120
  11. 《毫米波雷达运动人体目标建模与特征提取》---论文学习笔记
  12. 新浪微博发布文章html,微博怎么发文章
  13. 计算机ping使用的端口,ping 端口:Ping端口命令的使用方法介绍
  14. 【FireFox】火狐浏览器的Flash插件安装
  15. 2012年8月编程语言就业趋势
  16. glassfish插件_可扩展GlassFish v3的JavaEE 6平台
  17. 企业口碑营销如何做好,可运用这5T理论
  18. 微信小程序制作——获取用户信息
  19. 解决Win10系统过期失效问题的经验总结
  20. 苹果系统小技巧 篇六:Mac的10个必备小技巧,原来Windows的功能早在Mac上实现了

热门文章

  1. 【今日CS 视觉论文速览】 27 Dec 2018
  2. 字符流的抽象类 java
  3. django-cbv与fbv
  4. dj鲜生-23-模板抽离-继承的小结
  5. javascript-索引1908
  6. jquery-文档处理
  7. 2、压滤机现场图片和组成部分详细构造
  8. 新手教程——在Linux Mint 16中找到保存的WiFi密码
  9. Linux运维基础命令笔试题
  10. nginx优化(经典)