【问题标题】:How to construct binary tree from algebraic expression如何从代数表达式构造二叉树
【发布时间】:2025-12-07 16:45:02
【问题描述】:

在我的考试中,我得到了这个表达式并且未能构造二叉树。解决办法是什么?

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

我从上面的表达式中画了树

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

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

谁能帮帮我?

【问题讨论】:

  • 编辑您的帖子并向我们展示您认为二叉树应该是什么。
  • 我画了先生..你能找出我的问题吗?
  • 我在你的树中没有看到任何错误。问你的老师。
  • 感谢您宝贵的cmets
  • 老实说,我也看不出得到零的原因。能否请您分享一下您的老师是否会解释?

标签: data-structures binary-tree algebraic-data-types


【解决方案1】:

构造二叉树并不意味着您只需绘制此处显示的图形表示。 我认为这实际上意味着在代码中实现或可能在伪代码中实现。 所以再想想用同样的表达式使用stackinfix 符号转换为postfix,您可以使用堆栈属性轻松解决。

【讨论】:

    【解决方案2】:

    我目前正在学习离散数学课程,我们的主题是树。您必须记住将每个级别放在自己的()中。所以我相信你创建的树看起来像这样一个表达式:((5*a)-(3*b))^2*((3*a)+(5*b))^3。这是树的中序遍历。对于您的答案,您需要更多类似的内容:

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

    【讨论】: