如何在c中打印解析树的所有叶节点(操作数)?
如果我得到后缀表达式,我想制作数学表达式树并打印所有操作数。 ex)输入:A B+C D-*E/F G*+ 输出:A B C D E F G如何在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
请提供一个最小的可复制示例
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();
}