Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中打印解析树的所有叶节点(操作数)?_C - Fatal编程技术网

如何在c中打印解析树的所有叶节点(操作数)?

如何在c中打印解析树的所有叶节点(操作数)?,c,C,如果我得到后缀表达式,我想制作数学表达式树并打印所有操作数。 ex)输入:A B+C D-*E/F G*+ 输出:A B C D E F G 以下代码无效 这是我没有打印操作数部分的代码 请提供一个最小的可复制示例 void printLeaf(node *t){ if (t->left ==NULL&& t->right==NULL) { printf("%c ", t->key); return

如果我得到后缀表达式,我想制作数学表达式树并打印所有操作数。 ex)输入:A B+C D-*E/F G*+ 输出:A B C D E F G

  • 以下代码无效

  • 这是我没有打印操作数部分的代码

  • 请提供一个最小的可复制示例
    void printLeaf(node *t){
        if (t->left ==NULL&& t->right==NULL) {
            printf("%c ", t->key);
            return;
        }
        if (t->left)
            printLeaf(t->left);
        if (t->right)
            printLeaf(t->right);
    }
    
    void printLeaf(node *t){
        /* I don't know how to fill this*/
    }
    
    void preorder_traverse(node *t){
        if (t != tail){
            printLeaf(t);
            preorder_traverse(t->left);   
            preorder_traverse(t->right); 
        }
    }
    
    node *make_parse_tree(char *p){
        
        node *t;
        while (*p){
            while (*p == ' ')
                p++;
            t = (node*)malloc(sizeof(node));
            t->key = *p;
            t->left = tail;
            t->right = tail;
            if (is_operator(*p)) {
                t->right = pop();
                t->left = pop();
            }
            push(t);
            p++;
        }
        return pop();
    }