中缀表达式构建二叉树

作者: 西5d | 来源:发表于2018-11-07 23:26 被阅读12次

    在上篇文章栈结构与四则运算中提到了通过算术表达式构造二叉树,比如
    9+(3-1)\times3+10\div2
    是一个标准的算术表达式,也叫中缀表达式。在通过中缀表达式构造二叉树的过程中,计算数要作为叶子节点,运算符作为中间节点,考虑算术优先级。因为正常单从一个中缀表达式是无法获得唯一的一个二叉树结构的。总结来说,中缀表达式构造二叉树有以下几个步骤和要点:

    1. 计算数作为叶子节点,运算符作为中间节点。
    2. 对算式按照优先级和计算顺序分割,计算数为叶子节点,运算符为中间节点,直到算式对应到二叉树中。
    3. 分析过程中,可以用括号辅助分割表达式,依次分析得到左右树节点。

    如下对中缀表达式9+(3-1)*3+10/2构造二叉树过程:
    根据优先级,分为三个部分9, +, (3-1)*3+10/2,计算数9为左叶子,运算符+为中间节点;
    继续分割(3-1)*3+10/2,也是三部分(3-1)*3,+,10/2,+为根节点,左子树为(3-1)*3,右子树为10/2
    继续,先拆分左侧(3-1)*3,三部分3-1,*,3,* 中间节点,3右叶子,继续可以拆分3-1
    拆分右侧,对于10/2,拆分为10,/,2,整个转换完成。

    最终的树结构如图


    表达式二叉树

    相关文章

      网友评论

        本文标题:中缀表达式构建二叉树

        本文链接:https://www.haomeiwen.com/subject/hkbbxqtx.html