DFS_257. 二叉树的所有路径
Posted zzxisgod
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DFS_257. 二叉树的所有路径相关的知识,希望对你有一定的参考价值。
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入: 1 / 2 3 5 输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
思路:
树的dfs算法相对图的dfs算法更容易理解一点,BFS也是树比较好理解
这里先看官方给的定义
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
每个节点都有他的左孩子或者右孩子,除非他是叶子节点
所以遍历就看是不是叶子节点就行了,不是叶子节点就递归,是叶子节点就记录该条路径,回溯
class Solution { public static LinkedList<String> dfs(TreeNode root, String way, LinkedList<String>path){ if (root == null){ return null; }else { //路径中加入该节点 way += Integer.toString(root.val); // 当前节点是叶子节点 if ((root.left == null) && (root.right == null)) // 记录该条路径 path.add(way); else { way += "->"; // 当前节点不是叶子节点,继续递归遍历 dfs(root.left, way, path); dfs(root.right, way, path); } } return path; } public List<String> binaryTreePaths(TreeNode root) { LinkedList<String> path = new LinkedList(); dfs(root, "", path); return path; } }
以上是关于DFS_257. 二叉树的所有路径的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和