📅  最后修改于: 2023-12-03 15:28:38.912000             🧑  作者: Mango
本题目主要考察二叉树的遍历和构建。在本题中,我们需要实现从给定的中缀表达式字符串中构建出一棵二叉树,并完成二叉树的后序遍历,最终输出结果。
我们可以将中缀表达式转化为二叉树表示。具体的,我们使用下面的规则从中缀表达式字符串构建一棵二叉树:
例如,对于中缀表达式 "1+2*3",我们可以将其转化为二叉树表示:
+
/ \
1 *
/ \
2 3
然后我们需要输出该二叉树的后序遍历结果。例如,对于上述树,其后序遍历结果为 "1 2 3 * +"。
请你完成程序实现,根据输入的中缀表达式,输出对应的后序遍历结果。
输入共一行,为一个字符串,表示输入的中缀表达式。输入的中缀表达式仅包含以下内容:
输入字符串中的除号 "/" 表示实数除法,即对应的运算结果一般为实数。除法运算符输出为小数点后四位有效数字的实数,其余运算符均为整数运算。输入字符串表达式保证合法,不同元素之间均以一个空格隔开。
输出共一行,为一个字符串,表示根据输入的中缀表达式构建的二叉树的后序遍历结果。输出字符串中间间隔一个空格。
2 + 3 * 4
2 3 4 * +
在本题目中,我们可以考虑使用函数递归来实现二叉树的构建和遍历。
其中,构建二叉树的具体算法大致如下:
在定义了二叉树之后,我们可以使用递归的方式来实现二叉树的后序遍历。对于一个节点,我们可以递归输出其左右子树的后序遍历结果,然后将该节点的值加入到结果中即可。
具体的代码实现如下: