# Part B References

## LeetCode for Part B

In general: https://leetcode.com/problemset/all/ (sort by easy difficulty)

### LeetCode Trees

NOTE 1: on LeetCode root usually can also be None

NOTE 2: on LeetCode self is reserved for the test runner, ignore it

NOTE 3: if you try the algorithms on your computer, you will want to add these __str__ and __repr__ methods to TreeNode:

class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right

def __str__(self):

""" Returns a pretty string of the tree """
def str_branches(node, branches):
""" Returns a string with the tree pretty printed.

branches: a list of characters representing the parent branches. Characters can be either   or '│'
"""
strings = [str(node.val)]

i = 0
if node.left != None or node.right != None:
for current in [node.left, node.right]:
if i == 0:
joint = '├'
else:
joint = '└'

strings.append('\n')
for b in branches:
strings.append(b)
strings.append(joint)
if i == 0:
branches.append('│')
else:
branches.append(' ')

if current != None:
strings.append(str_branches(current, branches))
branches.pop()
i += 1
return "".join(strings)

return str_branches(self, [])

def __repr__(self):
return self.__str__()

NOTE 4: testcases are expressed as a list, which doesn’t tell much how the tree is structured. To see a visualization of the tree, when you get an error you can copy paste the ‘Input’ testcase into this tab and turn on the Tree Visualizer selector:

Trees exercises on LeetCode (sort by easy difficulty), for example:

## Geeks for geeks

NOTE: required outputs are a bit strange, often times they ask you to print stuff while in fact you just need to return some data.

### Geeks for geeks Graphs

NOTE: if they require you to produce stuff like matrices they are shown as a line of numbers but you have to return the actual Python matrix

DO NOT print anything