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`