2012-10-20 73 views
0

在我的考试中,我得到了这个表达式,并且未能构造出二叉树。解决方案是什么?如何从代数表达式构造二叉树

(5a-3b)^2*(3a+5b)^3 

我画的树从上述表达类似

  * 
     /\ 
     / \ 
     ^ \ 
     /\  \ 
    / \  \ 
     -  2 ^
    /\  /\ 
/ \  + 3 
    *  * /\ 
/\ /\ / \ 
5 a 3 b *  * 
      /\ /\ 
      3 a 5 b 

我从这个答案得到0!我无法理解原因!

任何人都可以帮助我吗?

+0

编辑您的帖子,并告诉我们你认为二叉树应该是什么。 –

+0

我画了先生..你能找出我的问题吗? – Iqbal

+0

我在你的树中没有看到任何错误。问你的老师。 –

回答

0

构建一个二叉树并不意味着你只画出了你在这里显示的图形表示。 我认为这实际上意味着在代码中实现或可能在伪代码。 所以再考虑使用stack并使用相同的表达式 将infix表示法转换为postfix,并且您可以使用堆栈属性轻松解决该问题。

0

我目前正在参加离散数学课程,我们正在讨论树木问题。你必须记住把每个级别放在它自己的()中。所以我相信你创建的树会看起来像这样一个表达式:((5 * a) - (3 * b))^ 2 *((3 * a)+(5 * b))^ 3。这是树的Inorder遍历。对于你的答案,你需要有更多这样的东西:

    * 
       / \ 
      / \ 
      /  \ 
      ^  \ 
     / \  \ 
     / \  \ 
     -  2  ^
    / \   /\ 
    / \   / 3 
    5a  3b  + 
        / \ 
        / \ 
        3a  5b