领扣(LeetCode)二叉树的所有路径 个人题解
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
本题有多种解法,可参考https://blog.csdn.net/xiezongsheng1990/article/details/79574892的代码。时间关系不累述。
递归算法的代码如下:
1 class Solution { 2 List<String> ans = new LinkedList<>(); 3 4 public List<String> binaryTreePaths(TreeNode root) { 5 if (root == null) 6 return ans; 7 GoNext(root, String.valueOf(root.val)); 8 return ans; 9 10 } 11 12 public void GoNext(TreeNode t, String sans) { 13 if (t.left == null && t.right == null) { 14 ans.add(sans); 15 return; 16 } 17 if (t.left != null) { 18 GoNext(t.left, sans + "->" + t.left.val); 19 } 20 if (t.right != null) { 21 GoNext(t.right, sans + "->" + t.right.val); 22 } 23 } 24 }