257、二叉树的所有路径
难度:简单
给你一个二叉树的根节点 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); } } }}