257. 二叉树的所有路径
public List<String> binaryTreePaths(TreeNode root) {
List<String> result = new ArrayList<>();
String sb = "";
goDeepSearch(root, result, sb);
return result;
}
public void goDeepSearch(TreeNode node, List<String> result, String sb) {
if (node != null && node.left == null && node.right == null) {
result.add(sb + node.val);
} else if(node != null){
sb += node.val + "->";
int length = sb.length();
goDeepSearch(node.left, result, sb);
sb = sb.substring(0, length);
goDeepSearch(node.right, result, sb);
}
}
最近一直都在写深度遍历的题,从简单到中等
解题思路:
- 遍历二叉树全路径,加入到List的条件为:
1、当前节点不为 Null;
2、左右树为Null - 由于传入左右遍历的值需要保持一致,方法内又会修改该值所以需要提前记录下进入方法时的值;
- 这边使用的是记录长度,左子树遍历返回后,获取初始值再去遍历右子树;
就是这样