257. 二叉树的所有路径(一般)
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/
2 3
5
输出: [“1->2->5”, “1->3”]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
思路:
回溯
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| class Solution { List<String> res= new ArrayList<>(); List<Integer> tmpath = new ArrayList<>(); public List<String> binaryTreePaths(TreeNode root) { if(root==null){ return new ArrayList<String>(); } backtrack(root); return res;
} public void backtrack(TreeNode node){ tmpath.add(node.val); if(node.left==null && node.right==null){ StringBuilder tmpstr = new StringBuilder(); for(int i=0;i<tmpath.size()-1;i++){ tmpstr.append(tmpath.get(i)); tmpstr.append("->"); } tmpstr.append(tmpath.get(tmpath.size()-1)); res.add(tmpstr.toString()); return; } if(node.left!=null){ backtrack(node.left); tmpath.remove(tmpath.size()-1); } if(node.right!=null){ backtrack(node.right); tmpath.remove(tmpath.size()-1); } } }
|