题目
:::info
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5]
输出:[“1->2->5”,”1->3”]
示例 2:
输入:root = [1]
输出:[“1”]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
:::
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/class Solution {public List<String> binaryTreePaths(TreeNode root) {List<String> paths = new ArrayList<String>();dfs(root,"",paths);return paths;}//path为当前正在遍历的路径,paths为最终的路径集合public static void dfs(TreeNode root,String path,List<String> paths){if(root != null){StringBuffer pathSB = new StringBuffer(path);pathSB.append(Integer.toString(root.val));if(root.left == null && root.right == null){ //节点为叶子节点paths.add(pathSB.toString()); //集合中存放的是字符串}else{ //节点为非叶子节点pathSB.append("->");dfs(root.left,pathSB.toString(),paths);dfs(root.right,pathSB.toString(),paths);}}}}
