Add coding exercises for Facebook interviews
Add attempts at solving coding problems to Briefcase.
This commit is contained in:
parent
d2d772e43e
commit
aa66d9b83d
66 changed files with 2994 additions and 0 deletions
79
scratch/facebook/bst-checker.py
Normal file
79
scratch/facebook/bst-checker.py
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
from collections import deque
|
||||
|
||||
class Node(object):
|
||||
def __init__(self, value, left=None, right=None):
|
||||
self.value = value
|
||||
self.left = left
|
||||
self.right = right
|
||||
|
||||
def insert_left(self, value):
|
||||
self.left = Node(value)
|
||||
return self.left
|
||||
|
||||
def insert_right(self, value):
|
||||
self.right = Node(value)
|
||||
return self.right
|
||||
|
||||
def min(self):
|
||||
xs = deque()
|
||||
result = float('inf')
|
||||
xs.append(self)
|
||||
while xs:
|
||||
node = xs.popleft()
|
||||
result = min(result, node.value)
|
||||
if node.left:
|
||||
xs.append(node.left)
|
||||
if node.right:
|
||||
xs.append(node.right)
|
||||
return result
|
||||
|
||||
def max(self):
|
||||
xs = deque()
|
||||
result = float('-inf')
|
||||
xs.append(self)
|
||||
while xs:
|
||||
node = xs.popleft()
|
||||
result = max(result, node.value)
|
||||
if node.left:
|
||||
xs.append(node.left)
|
||||
if node.right:
|
||||
xs.append(node.right)
|
||||
return result
|
||||
|
||||
def is_bst(self):
|
||||
result = True
|
||||
if self.left:
|
||||
result = result and self.left.max() < self.value
|
||||
if self.right:
|
||||
result = result and self.right.min() > self.value
|
||||
return result
|
||||
|
||||
|
||||
x = Node(
|
||||
50,
|
||||
Node(
|
||||
17,
|
||||
Node(
|
||||
12,
|
||||
Node(9),
|
||||
Node(14),
|
||||
),
|
||||
Node(
|
||||
23,
|
||||
Node(19),
|
||||
),
|
||||
),
|
||||
Node(
|
||||
72,
|
||||
Node(
|
||||
54,
|
||||
None,
|
||||
Node(67)
|
||||
),
|
||||
Node(76),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
assert x.is_bst()
|
||||
print("Success!")
|
||||
Loading…
Add table
Add a link
Reference in a new issue