Traverse a tree
Pre-order Traversal
前序遍历,In-order Traversal
中序遍历,Post-order Traversal
后序遍历。这里的pre-
,in-
,post-
都是针对根结点来说的,pre-order
:先根顺序,先根结点,然后左结点,再右结点;in-order
:中根顺序,先左结点,然后根节点,再右结点;post-order
:后根顺序,先左结点,然后右结点,再根结点Level-order Traversal
层序遍历,一层一层地遍历一个二叉树
Solve problems recursively
- 一棵树可以被递归地定义为一个包含一个值和多个指向子结点指针的结点,所以递归就是树这种数据结构的自然特性。所以许多树的问题可以递归地被解决
- 而递归又可以分为两大类:自顶向下和自底向上
- 自顶向下是指在每一次递归中,先处理结点,再在下一次递归中把处理后得到的值传递给它的子结点。因此,自顶向下的方法可以被看作是一种前序遍历
- 自底向上是指在每一次递归中,先递归地处理子结点,再根据返回的值和当前结点的值来得到答案。因此,自底向上的方法可以被看作是一种后序遍历
- 已知前序遍历和后序遍历,不能唯一地确定一棵二叉树的,因为无法确定谁是左结点谁是右结点,而知道前序遍历和中序遍历或者知道后序遍历和中序遍历都可以
总结:
树的问题目前还是有点复杂。到目前为止过了数组、链表、队列、栈、二叉树、哈希表。还有树的其它类型以及图、堆等,想着之后再学习了。