0
二叉搜索树我已在有序打印按顺序使用括号
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)<(3)>(8)) 但是当将7添加到树上以打印它时,如下:((2)<(3)>((7)<(8) )))。 就像至少有一个节点的每棵树都必须放在括号内。 有没有办法做到递归?
'“((2)<(3)>((7)<(8) ))“'是一个奇怪的结果(不平衡的'<>')。你是否确定这正是期望的输出? – chux 2015-02-08 12:46:49
@chux根据op的既定目标,在<<>中没有保证的“平衡”,例如:树只有一边有孩子。然而,我仍然对“问题”*失去了兴趣,因为如果我理解了目标,OP的输出似乎是正确的。 – WhozCraig 2015-02-08 12:54:15
@WhozCraig是的,我也希望OP解释更多。例如:“2,3,8”是一个列表,而不是一棵树,许多不同的树可以有“2,3,8”的元素。虽然我确信“添加括号”的意思是“添加括号和尖括号”。 – chux 2015-02-08 13:01:07