看着挺容易的,然而我对这题并没有什么印象。。。从root到leaf,那显然就是dfs了。。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
// 此题是简单题,在google面试的第二天重新振作,做的第一题。。。一次bug-free了,毕竟是easy。。。就是一道典型的dfs。。。1.31.17
public List<String> binaryTreePaths(TreeNode root) {
List<String> list = new ArrayList<String>();
if(root==null) return list;
addPath(root, "", list);
return list;
}
// 这个function还是比较熟悉了,就是dfs的套路。。。
public void addPath(TreeNode root, String str, List<String> list){
if(root.left==null && root.right==null){
list.add(str+root.val);
return;
}
if(root.left!=null){ // 在这里我还纠结了一下这 箭头是加在什么位置。。。后来想明白了。。如果有下一个,那就肯定要加箭头。。没有的话,那就自然在上面的base case 中解决了
addPath(root.left, str+root.val+"->", list);
}
if(root.right!=null){
addPath(root.right, str+root.val+"->", list);
}
}
}