表达式树

表达式树基础知识

表达式树是一类树,基本结构是所有的叶节点为操作树,非叶节点为操作符。如下图所示:


image.png
struct TreeNode
{
    char data;
    TreeNode *left;
    TreeNode *right;
    TreeNode(char inData): data(inData), left(nullptr), right(nullptr) {}
};

//true-操作符,false-操作数
bool isOperator(char inCh)
{
    if (inCh >= 'a' && inCh <= 'z') {
        return false;   
    }
    return true;
}


TreeNode *BuildExpressionTree(const char *inExpression)
{
    if (inExpression == nullptr || *inExpression == '\0') {
        return nullptr;
    }
    const char *cycleIter = inExpression;
    stack<TreeNode *> treeStack;
    while (*cycleIter != '\0') {
        if (!isOperator(*cycleIter)) {
            TreeNode *newNode = new TreeNode(*cycleIter);
            treeStack.push(newNode);
        }
        else {
            TreeNode *newNode = new TreeNode(*cycleIter);
            newNode->right = treeStack.top(); treeStack.pop();
            newNode->left = treeStack.top(); treeStack.pop();
            treeStack.push(newNode);
        }
        ++cycleIter;
    }
    return treeStack.top();
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 将中缀表达式转换成表达式树 最快捷的方法是先找到表达式树的根元素, 以下面的这个中缀表达式为例 为了找到表达式树的...
    爱上落入尘世间的你阅读 3,184评论 0赞 1
  • 关于表达式树的相关概念,百度上有很多相关的文章进行介绍,在此就不再进行班门弄斧,之所以学习表达式树的相关知识点主要...
    宋大肿阅读 3,456评论 0赞 6
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,517评论 1赞 5
  • 表达式树中缀表达式转换为后缀表达式后缀表达式总结
    杰米阅读 227评论 0赞 0
  • “我希望有很多的钱”大部分人说这句话,意味着属于你个人的时间要变少了! “我希望有更多的时间陪着家里人”,有这个念...
    北极1103阅读 674评论 0赞 4

友情链接更多精彩内容