[LeetCode] 257. Binary Tree Paths_ Easy tag: DFS

Posted

tags:

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

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

思路为DFS, 只是append进入stack的时候一并append进入当前的path即可.

1. Constraints
1) can be empty

2. Ideas
DFS T: O(n) S: O(n)
1) edge case
2) stack = [(root, str(root.val))]
3) DFS, if leaf, ans.append(path)
4)return ans

3. Codes
3.1) iterable
 1 class Solution:
 2     def path(self, root):
 3         if not root: return []
 4         ans, stack = [], [(root, str(root.val))]
 5         while stack
 6             node, path = stack.pop()
 7             if not node.left and not node.right:
 8                 ans.append(path)
 9             if node.right:
10                 stack.append((node.right, path + "->" + node.right.val))
11             if node.left:
12                 stack.append((node.left, path + "->" + node.left.val))
13         return ans

 

3.2) Recursive

 1 class Solution:
 2     def path(self, root):
 3         def helper(root, path, ans):
 4             path += str(root.val)
 5             if not root.left and not root.right:
 6                 ans.append(path)
 7             if root.left:
 8                 stack.append((root.left, path + "->", ans))
 9             if root.right:
10                 stack.append((root.right, path + "->", ans))
11         if not root: return []
12         ans = []
13         helper(root, "", ans)
14         return ans

 

4.. Test cases

1) empty

2)  1

3) 

   1
 /   2     3
   5















以上是关于[LeetCode] 257. Binary Tree Paths_ Easy tag: DFS的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode257]Binary Tree Paths

LeetCode 257. Binary Tree Paths

Java [Leetcode 257]Binary Tree Paths

leetcode?python 257. Binary Tree Paths

leetcode 257. Binary Tree Paths

Leetcode 257: Binary Tree Paths