遍历来求值,求路径
Binary Tree Paths
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> paths = new ArrayList<>();
if (root == null) return paths;
//traversal 想清楚递归3要素
StringBuilder path = new StringBuilder();
path.append(root.val);
dfs(paths, path, root);
return paths;
}
//backtracking 3 factors
//definition: generate all the paths for tree with root
private void dfs(List<String> paths, StringBuilder path, TreeNode root) {
//edge case
if (root.left == null && root.right == null) {
paths.add(new String(path));
return;
}
//iteration
int len = path.length();
if (root.left != null) {
path.append("->");
path.append(root.left.val);
dfs(paths, path, root.left);
path.setLength(len);
}
if (root.right != null) {
path.append("->");
path.append(root.right.val);
dfs(paths, path, root.right);
path.setLength(len);
}
}
}Maximum Average Subtree
Last updated