题目分析
题目链接
这道题目的要求是让我们返回一棵树的所有路径。示例如下:
树结构:
1
/ \
2 3
\
5
返回:
["1->2->5", "1->3"]
这道题目的关键就是能写出帮助函数,当前根节点的左右子树都不为空的时候要添加一条路径。子树为空的时候什么也不需要处理。子树不为空的时候递归寻找路径即可。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> res = new ArrayList<String>();
if(root == null) {
return res;
}
helper(root, String.valueOf(root.val), res);
return res;
}
private void helper(TreeNode root, String path, List<String> res) {
if(root == null) {
return;
}
// 如果左右子树都不为空,则要添加一条路径(添加一条到当前结点的路径即可)
if(root.left == null && root.right == null) {
res.add(path);
return;
}
if(root.left != null) {
helper(root.left, path + "->" + String.valueOf(root.left.val), res);
}
if(root.right != null) {
helper(root.right, path + "->" + String.valueOf(root.right.val), res);
}
}
}
网友评论