mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 13:24:05 -06:00
39 lines
1.1 KiB
Markdown
39 lines
1.1 KiB
Markdown
---
|
|
title: "binary-search-tree"
|
|
aliases: binary search tree, BST
|
|
tags:
|
|
- cosc201
|
|
- datastructure
|
|
---
|
|
|
|
[code](https://blackboard.otago.ac.nz/bbcswebdav/pid-2890167-dt-content-rid-18354839_1/courses/COSC201_S1DNIE_2022/BST.java)
|
|
|
|
[bst-operations](notes/bst-operations.md)
|
|
|
|
a collection of *nodes* with one distinguished node called the root
|
|
|
|
rules:
|
|
- the node data contains a key which comes from some ordered type e.g., `string`
|
|
- each node can have at most who children - there are two fixed slots called left child and right child
|
|
- the left child node and it descendents are called the left subtree
|
|
- the key value at a nodes *left child* (and all its descendants) must be *less* than the key of the node
|
|
- the key value at a nodes *right child* (and all its descendants) must be *greater* than the key of the node
|
|
- we do not allow duplicate keys
|
|
|
|
Notation
|
|
- n.key for key
|
|
- n.l and n.r for left and right children
|
|
- n.p for its parent
|
|
- nil for a "not here" marker. e.g., n.r = nil means "n has no right child"
|
|
|
|
e.g.,
|
|

|
|
|
|
In this example:
|
|
- root.p = nil
|
|
- root.r = n
|
|
- n.p = root
|
|
- n.key = emu
|
|
- n.l = nil
|
|
- n.r.key = rat
|