Lesson 16/25 ยท ๐ณ Trees
๐ณ TreesLesson 16/25
Phase 5 ยท Trees20 min
Binary Search Trees
Ordered trees that combine the speed of binary search with the flexibility of trees
A Binary Search Tree (BST) satisfies one property: for every node, all values in its left subtree are smaller, and all values in its right subtree are larger.
This property enables O(log n) search, insert, and delete, *if the tree is balanced*.
This property enables O(log n) search, insert, and delete, *if the tree is balanced*.
BST search and insertpython
class BST:
class Node:
def __init__(self, val):
self.val = val
self.left = self.right = None
def __init__(self): self.root = None
def insert(self, val):
def _insert(node, val):
if not node: return self.Node(val)
if val < node.val: node.left = _insert(node.left, val)
elif val > node.val: node.right = _insert(node.right, val)
return node
self.root = _insert(self.root, val)
def search(self, val):
def _search(node, val):
if not node: return False
if val == node.val: return True
return _search(node.left, val) if val < node.val else _search(node.right, val)
return _search(self.root, val)
bst = BST()
for v in [5, 3, 7, 1, 4, 6, 8]:
bst.insert(v)
print(bst.search(4)) # โ True
print(bst.search(9)) # โ False๐คQuick Check
An in-order traversal of a BST gives you the values in what order?
Practice Exercises
0/1 solvedExercise 1 of 1medium
โฑ 00:00Validate BST
Determine if a binary tree is a valid BST.
Expected output:
Expected output:
Truesolution.py
1 / 1
Solve all 1 exercise to unlock completion