一 题目:
二 思路:
向所有可能为叶子节点的路径出发(向有孩子节点的方向走,直到到最后一个)
三 代码:
public static List<String> binaryTreePaths(TreeNode root) {
Set<String> res=new HashSet<>();
if (root==null){
return new ArrayList<>(res);
}else {
searchBinPath(res,root,"");
}
return new ArrayList<>(res);
}
private static void searchBinPath(Set<String> res,TreeNode currNode, String currStr) {
//遍历完该分支所有节点
if (currNode.left==null && currNode.right==null){
currStr=(currStr+currNode.val);
res.add(currStr);
}else {
//只向有叶子节点的地方走
if (currNode.left!=null) {
//向右尝试
searchBinPath(res,currNode.left,new String(currStr+currNode.val+"->"));
}
if (currNode.right!=null) {
//向右尝试
searchBinPath(res,currNode.right,new String(currStr+currNode.val+"->"));
}
}
}








网友评论