领扣(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 }

猜你喜欢

转载自www.cnblogs.com/axiangcoding/p/9944236.html