二叉树与二叉搜索树的深入解析
1. 表达式树处理
表达式树是一种用于处理算术表达式的二叉树。树中的节点包含两种类型的对象:运算符和终结值。运算符有操作数,而终结值没有操作数。表达式树的思想很简单,每个节点的子树是其父节点中运算符的操作数。操作数可以是终结值,也可以是其他表达式。表达式在子树中展开,终结值位于叶节点。
通过不同的遍历方式(前序、中序、后序),表达式树可以轻松地将表达式转换为三种常见表示形式:前缀、中缀和后缀。
1.1 不同遍历方式得到的表达式及求值
- 前缀表达式 :前序遍历表达式树可得到前缀表达式。例如,对于表达式树进行前序遍历得到前缀表达式
x / - 74 10 32 + 23 17
。求值时,将每个运算符应用于紧随其后的两个操作数,计算结果为( x ( / ( - 74 10 ) 32 ) ( + 23 17 ) ) = 80
。 - 中缀表达式 :中序遍历得到中缀表达式,如
74 - 10 / 32 x 23 + 17
。中缀表达式是我们在数学中最熟悉的形式,但计算机处理起来不太方便,因为它没有明确的运算顺序。不过,我们可以通过在遍历树时为表达式的每个部分添加括号来解决这个问题,完整加括号后的表达式求值为( ( ( 74 - 10 ) / 32 ) x ( 23 + 17 ) ) = 80
。 - 后缀表达式 :后序遍历得到后缀表达式,如