# Sprint 3 Module Project 4
## Traverse Tree
```
"""
Understand
1
/ \
2 4
\ /
3 5
output: [1,2,4,3,5]
Plan
This is just simple level-order traversal
Runtime: O(n)
Space:(max number of nodes in last level of perfect binary tree)
"""
def traverseTree(t):
if t == None:
return []
queue = deque()
queue.append(t)
res = []
while len(queue) > 0:
curr = queue.popleft()
res.append(curr.value)
if curr.left != None:
queue.append(curr.left)
if curr.right != None:
queue.append(curr.right)
return res
```
## Tree Paths
```
"""
1
/ \
2 5
/ \
3 4
Output: ["1->2->3", "1->2->4", "1->5"]
1
/
2
/
3
Output: ["1->2->3"]
1
Output: ["1"]
Plan
Recursively go through all paths down to leaves,
while keeping track of the current path you're on
Once you hit a leaf, then you append the path
that you took to the resulting array
Runtime: O(number of nodes in tree)
Space: O(height of tree)
"""
def treePaths(t):
if t == None:
return []
res = []
currPath = ""
treePathsHelper(t, res, currPath)
return res
def treePathsHelper(root, res, currPath):
currPath += f"{root.value}"
if root.left == None and root.right == None:
res.append(currPath)
return
if root.left != None:
newPath = currPath + "->"
treePathsHelper(root.left, res, newPath)
if root.right != None:
newPath = currPath + "->"
treePathsHelper(root.right, res, newPath)
```