diff --git a/trees_and_graphs/README.md b/trees_and_graphs/README.md index 6d8b66a..d99e73e 100644 --- a/trees_and_graphs/README.md +++ b/trees_and_graphs/README.md @@ -1,8 +1,28 @@ -## trees +## trees and graphs
+--- + +### tree tranversals + +
+ +* if the depth of the tree is too large, stack overflow might happen, therefore iterative solutions might be better. +* **in-order** are similar to breath-first search (level order problems) + - work with queues +* **pre-order** is top-down (parameters are passed down to children). + - work with stacks +* **post-order** is a bottom-up solution (if you know the answer of the children, can you concatenate the answer of the nodes?): + - deletion process is always post-order: when you delete a node, you will delete its left child and its right child before you delete the node itself. + - also, post-order is used in mathematical expressions as it's easier to write a program to parse a post-order expression. using a stack, each time when you meet a operator, you can just pop 2 elements from the stack, calculate the result and push the result back into the stack. + + +
+ +--- + ### `Tree.py`