257.二叉树的全路径

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
  • 由于传入左右遍历的值需要保持一致,方法内又会修改该值所以需要提前记录下进入方法时的值;
  • 这边使用的是记录长度,左子树遍历返回后,获取初始值再去遍历右子树;
    就是这样
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容