You may want to look at previous problems from old ACSL contests while you are learning the topics below. I find it helpful to test my understanding by trying an old problem while I'm learning something new!
you can remember this as similar to a stack of books on a desk (when you add a book to the pile, it goes on the top of the pile; when you take a book off the pile, it also comes from the top of the pile)
a queue is FIFO (First In, First Out)
you can remember this as similar to a line up for a water fountain (when a new person is added to the line, they go to the back of the line; when a person leaves the line, they exit from the front of the line)
both data structures allow you to push (add new data), and pop (remove/access data). The only difference is where you push/pop to/from.
for a binary search tree, the first node is counted as depth 0 (similar to how we often count from the 0-th element when using arrays/lists)
terminology:
root is the uppermost node (at depth of 0)
leaf nodes are nodes with no children
depth of the tree can be found by counting the depth of the deepest node
internal path length is the sum of the depth of all the nodes
external node is anywhere a new node could be attached to the tree
external path length is the sum of the depths of all external nodes
Can be used to find patterns. We can convert between an algebraic expression of the regular expression, or a FSA (Finite State Automaton) representation.