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