Trees are a common data structure used to represent hierarchical data, often seen in DS&A problems. Trees are essentially linked lists where nodes are oriented from top to bottom instead of left to right, and each node can have more than 1 subsequent node, called "child nodes" in trees. Each child node can only have 1 "parent node", and nodes with no child nodes are called "leaf nodes". Nodes in trees generally contain a data payload (e.g. a number), and pointers to each respective child node.