• 257. Binary Tree Paths


    题目:

    Given a binary tree, return all root-to-leaf paths.

    For example, given the following binary tree:

       1
     /   
    2     3
     
      5
    

    All root-to-leaf paths are:

    ["1->2->5", "1->3"]

    链接: http://leetcode.com/problems/binary-tree-paths/

    3/4/2017

    碰到的问题:

    1. Java调用函数当中值是如何传递的,按照这种做法,C++可能需要用reference/pointer, Python可能需要返回值,Java这里可以直接在calling function中用,挺神奇。

    2. parentNodes不要被之前的结果影响,当完成左子树时候应该回到本来的长度。第20行应该不需要subList,但是第23行绝对需要。

    3. root == null时应该还是返回ret, 而不是null

    4. 效率比较低,还有这道题几乎是蒙对的。

     1 public class Solution {
     2     public List<String> binaryTreePaths(TreeNode root) {
     3         List<String> ret = new ArrayList<String>();
     4         if (root == null) return ret;
     5 
     6         List<String> s = new ArrayList<String>();
     7         binaryTreePath(root, s, ret);
     8         return ret;
     9     }
    10     private void binaryTreePath(TreeNode root, List<String> parentNodes, List<String> allPaths) {
    11         int length = parentNodes.size();
    12         if (root.left == null && root.right == null) {
    13             parentNodes.add(Integer.toString(root.val));
    14             String path = String.join("->", parentNodes);
    15             allPaths.add(path);
    16             return;
    17         } else {
    18             parentNodes.add(Integer.toString(root.val));
    19             if (root.left != null) {
    20                 binaryTreePath(root.left, parentNodes.subList(0, length + 1), allPaths);
    21             }
    22             if (root.right != null) {
    23                 binaryTreePath(root.right, parentNodes.subList(0, length + 1), allPaths);
    24             }
    25         }
    26 
    27     }
    28 }

    看别人的算法,不需要传值parentNodes, allPaths,可以直接利用stack做DFS recursive在一个函数中完成。留给二刷。

  • 相关阅读:
    c++动态数组
    通俗理解ac,ap,路由器的区别(很好懂)
    java连接pg数据库
    分享:更好地理解c++类,多文件导入等
    安装WinPcap等软件出现关于npf.sys的错误
    【开源】EP3C25Q240扩展板1
    UML——用例图
    Git常用命令
    聊聊新特性操作符 ! / ? / ??
    精通 Nginx 扒书记录
  • 原文地址:https://www.cnblogs.com/panini/p/6504815.html
Copyright © 2020-2023  润新知