Leetcode solution 257: Binary Tree Paths

Posted baozitraining

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode solution 257: Binary Tree Paths相关的知识,希望对你有一定的参考价值。

 Problem Statement 

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

Note: A leaf is a node with no children.

Example:

Input:

   1
 /   2     3
   5

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

Explanation: All root-to-leaf paths are: 1->2->5, 1->3

Problem link

 

Video Tutorial

You can find the detailed video tutorial here

 

Thought Process

Easy problem. Use pre-order traversal from root to leaf and keep the recursion path. The recursion returning condition would be when a node doesn’t have left and right children. Note use a string to keep appending is easier than using a string builder, because we need to pop out and reset the string builder.

 

Caveat

  • Handle the single node situation when no "->". E.g.,  A vs A->B

There is also an iterative implementation of this using one stack, similar to BST iterator using one stack problem. 

 

Solutions

 

Pre-order traversal

 1 private List<String> res; // stores the final output
 2 
 3     public List<String> binaryTreePaths(TreeNode root) 
 4         this.res = new ArrayList<>();
 5         helper(root, "");
 6         return this.res;
 7     
 8 
 9     // helper function that does basic depth first traversal
10     private void helper(TreeNode root, String str) 
11         if(root == null) 
12             return;
13         
14 
15         if(root.left==null && root.right==null) // reach a leaf node, thus completes a path and need to add it into the output
16             this.res.add(str + root.val);
17         else 
18             str += root.val + "->";
19             helper(root.left, str);
20             helper(root.right, str);
21         
22         return;
23     

 

 

Time Complexity: O(N), each node is visited once

Space Complexity: O(N), N is the total nodes since that‘s the string length you need

 

References

以上是关于Leetcode solution 257: Binary Tree Paths的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode257]Binary Tree Paths

LeetCode 257. Binary Tree Paths

leetcode257

Leetcode 257

Java [Leetcode 257]Binary Tree Paths

LeetCode257. Binary Tree Paths 解题报告