难度:简单
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
思路使用迭代法,从根节点开始到叶节点结束,利用StringBuilder记录下当前路径,发现到叶节点后将该路径加入到返回的List中
注意:在使用StringBuilder记录路径时候需要注意传入子程序的StringBuilder是当前StringBuilder的拷贝,因为传入的参数是引用类型,如果直接将原来的传入会导致结果返回的List中所有元素都是一样的
package cn.edu.xjtu.carlWay.tree.binaryTreePath;
import cn.edu.xjtu.Util.TreeNode.TreeNode;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List binaryTreePaths(TreeNode root) {
if (root == null) {
return null;
}
List paths = new ArrayList<>();
StringBuilder path = new StringBuilder();
findPath(root, path, paths);
return paths;
}
private void findPath(TreeNode node, StringBuilder path, List paths) {
if (node != null) {
StringBuilder temp_path = new StringBuilder(path);
temp_path.append(node.val);
if (node.left == null && node.right == null) {
paths.add(temp_path.toString());
} else {
temp_path.append("->");
findPath(node.left, temp_path, paths);
findPath(node.right, temp_path, paths);
}
}
}
}



