我搜索了互联网和“你管”,但我没有找到任何好的教程。 如何在“后缀”中绘制给定表达式的相应“二叉树”?
这个表达式在中缀和前缀中的表现如何?
我不知道我应该如何逐步完成这项工作:(
18 5 1 + / 4 * 3 5 18 6 / - + -
注意:
绘制预订,后期订单和有序订单的规则是: 1.预先遍历:root,left,right 2.后序遍历:左,右,根 3.有序遍历:左根,右
我需要它进行考试
答案 0 :(得分:1)
从左到右扫描表达式。找到数字后,构建一个(叶子)节点,然后将其推入堆栈。当您找到一个运算符时,构建一个节点,从堆栈中弹出两个节点,将它们作为当前节点的左右子进行连接,然后将该节点推入堆栈并继续。在字符串的末尾,您必须只有堆栈上的根
当你拥有树时,找到前缀和中缀是微不足道的。
请注意,这是基于这样的假设,即每个运算符都需要两个值(可以很容易地适应一元运算符),也就是说,每个内部节点都有两个子节点。一般来说,从后缀构建树是不可能(参见维基百科)。