基本概念

节点深度

节点到跟节点的路径条数

节点高度

节点到其最远子孙叶子节点的路径条数

遍历方法

从二叉树的根节点出发,节点的遍历分为三个主要步骤:对当前节点进行操作(称为“访问”节点)、遍历左边子节点、遍历右边子节点。这三个步骤的先后顺序也是不同遍历方式的根本区别。

节点访问顺序是相对跟节点来定义的,即:
前序:根节点->左节点 ->右节点
中序:左节点->中节点 ->右节点
后序:左节点->右节点 ->根节点

深度优先

利用栈先进后出的的特性,来实现深度优先遍历。函数调用实现的方式正好是栈形式,所以不需要再保存路径信息。
例如有这么个二叉树:

前序遍历(Pre-Order Traversal)

A-B-D-E-F-H-C-I-J-K

中序遍历(In-Order Traversal)

D-B—F-E-H-A-C-J-K

后续序遍历(Post-Order Traversal)

D-F-H-E-B-J-K-I-C-A

广度优先

利用数组先进先出的特性,莱实现广度优先遍历。函数调用实现的方式正好是栈形式,所以需要创建队列来保证节点的顺序。

参考

wiki/树的遍历#中序遍历