我已经制作了一个按顺序打印树的递归函数
void print_tree(TREE_TYPE eType,Tree* root) {
if (eType == TREE_TYPE_INT)
print1(TREE_TYPE_INT, root);
if (eType == TREE_TYPE_CHAR)
print1(TREE_TYPE_INT, root);
}
void print_element(TREE_TYPE eType, void* data) {
if (eType == TREE_TYPE_INT) {
printf("(%d)", *((int*)data));
} else if (eType == TREE_TYPE_CHAR) {
printf("(%c)", *((char*)data));
}
}
void print1(TREE_TYPE eType, Tree* root) {
if (root == NULL)
return;
if (root->left) {
print1(eType, root->left);
printf("<");
}
print_element(eType, root->data);
if (root->right) {
printf(">");
print1(eType, root->right);
}
}
现在我必须以下面的方式为一棵树添加括号,用2,3,8打印结果:((2)&lt;(3)&gt;(8)) 但是当将7添加到树中以按如下方式打印时:((2)&lt;(3)&gt;((7)&lt;(8)))。 就像每个至少有一个节点的树必须在括号中。 有办法递归吗?
答案 0 :(得分:0)
您可以使用两个括号“围绕”print1
函数中的代码,并检查null,如下所示:
if (root->left || root->right) printf("(");