题目:二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
复制代码
示例:
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
复制代码
思考:
这题首先判断root节点左右节点是否为空,如果为空就直接将root.val返回。
否则递归其左右节点,然后循环把左右节点的结果集合和中的每个字符串前加上当前节点即可。
复制代码
实现:
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> res = new ArrayList();
if (root == null) return res;
if (root.left == null && root.right == null) {
res.add(root.val + "");
return res;
}
//递归左右节点下的路径
List<String> left = binaryTreePaths(root.left);
List<String> right = binaryTreePaths(root.right);
//将所有左右节点下路径加上当前父节点路径
if (left.size() > 0) {
for (String s : left)
res.add(root.val + "->" + s);
}
if (right.size() > 0) {
for (String s : right)
res.add(root.val + "->" + s);
}
return res;
}
}复制代码
转载于:https://juejin.im/post/5cad74615188251b0351e46a