二叉树的先序、中序、后序遍历

二叉树的先序、中序、后序遍历

表达式树

表示一个表达式树(expression tree)的例子。表达式树的叶子节点是操作数(operand),如常数或者变量,而其他的节点为操作符(operator)。如图
二叉树的先序、中序、后序遍历

中序遍历

通过递归打印产生的第一个表达式“(a + b * c ) + ( ( d * c + f ) * g )”,这种先遍历左子树,然后访问根节点,最后遍历右子树的方法称为中序遍历(inorder traversal)。由于其产生的表达式类型,这种遍历很容易记忆。

后序遍历

另一种方法,先遍历打印左子树,然后遍历打印右子树,最后打印根节点,得到的表达式为“abc * + de * f + g * +”,这种遍历方法称为后序遍历(postorder traversal)。

先序遍历

第三种方法,先遍历打印根节点的操作符,后遍历打印左子树和右子树的操作数。得到的表达式为“+ + a * bc * + * defg”,这种遍历方法称为先序遍历(preorder traversal)。