对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。以上图为例,递归的过程如下: (1):输出 1,接着左孩子; (2):输出 2,接着左孩子; (3):输出 4,左孩子为空,再接着右孩子; (4):输出 6,左孩子为空,再接着右孩子; (5):输出 7,左右孩子都为空,此时 2 的左子树全部输出,2 的右子树为空,此时 1 的左子树全部输出,接着 1 的右子树; (6):输出 3,接着左孩子; (7):输出 5,左右孩子为空,此时 3 的左子树全部输出,3 的右子树为空,至此 1 的右子树全部输出,结束。
对于当前结点,先输出它的左孩子,然后输出该结点,最后输出它的右孩子。以上图为例: (1):1–>2–>4,4 的左孩子为空,输出 4,接着右孩子; (2):6 的左孩子为空,输出 6,接着右孩子; (3):7 的左孩子为空,输出 7,右孩子也为空,此时 2 的左子树全部输出,输出 2,2 的右孩子为空,此时 1 的左子树全部输出,输出 1,接着 1 的右孩子; (4):3–>5,5 左孩子为空,输出 5,右孩子也为空,此时 3 的左子树全部输出,而 3 的右孩子为空,至此 1 的右子树全部输出,结束。
对于当前结点,先输出它的左孩子,然后输出它的右孩子,最后输出该结点。依旧以上图为例: (1):1->2->4->6->7,7 无左孩子,也无右孩子,输出 7,此时 6 无左孩子,而 6 的右子树也全部输出,输出 6,此时 4 无左子树,而 4 的右子树全部输出,输出 4,此时 2 的左子树全部输出,且 2 无右子树,输出 2,此时 1 的左子树全部输出,接着转向右子树; (2):3->5,5 无左孩子,也无右孩子,输出 5,此时 3 的左子树全部输出,且 3 无右孩子,输出 3,此时 1 的右子树全部输出,输出 1,结束。
一棵6节点二叉树的中序遍历为DBAGECF,先序遍历为ABDCEGF,后序遍历为( ) A. DGBEFAC B. GBEACFD C. DBGEFCA D. ABCDEFG
正确答案: C
解析 :open—>drawing book 由于网上讲解繁多,可供参考。我就直接上幅图…
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。
举例: (3 + 4) × 5 - 6 就是中缀表达式
× + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。
前缀表达式(前缀记法、波兰式) 前缀表达式的运算符位于操作数之前。 后缀表达式(后缀记法、逆波兰式) 后缀表达式与前缀表达式类似,只是运算符位于操作数之后。
后缀表达式(后缀记法、逆波兰式) 后缀表达式与前缀表达式类似,只是运算符位于操作数之后。
网上现在已经大多都是用"栈"来解决。 而我还是比较喜欢用画二叉树的“老土办法解决”…
前缀表达式 - + * 4 + 2 3 1 5 的值是( ) A. 15 B. 16 C. 17 D. 19 正确答案:B 一样,我还只是放张图而已… 今天的讲解就结束了,又不懂的可以发在评论区…_