我想打印我的BST的內容以樹的形式像BST:打印樹格式中的Turbo C
我當前的打印輸出:
10 - > 20 - > 30 - > 40 - > 60 - > 80 - > 90 - >
什麼,我希望它是這樣的:
40
/\
/\
20 60
/\ \
10 30 80
\
90
我試着做一些gotoxy但出於某種原因,我只是不能得到它來打印就像一棵樹,我認爲我需要做的不僅僅是gotoxy。另外「\」並不是真正必要的,只是一個附加功能,不會讓你們任何人感到困惑。
的代碼如下:
結構:
struct btnode
{
int value;
struct btnode *l;
struct btnode *r;
}*root = NULL, *temp = NULL, *t2, *t1;
打印:
void inorder(struct btnode *t)
{
if (root == NULL)
{
printf("No elements in a tree to display");
return;
}
if (t->l != NULL)
inorder(t->l);
printf("%d -> ", t->value);
if (t->r != NULL)
inorder(t->r);
}
我試圖在樹印:
void print(struct btnode *t, int x, int i, int y)
{
i = i/2 + 2;
if (root == NULL)
{
printf("No elements in a tree to display");
return;
}
if (t->l != NULL){
print(t->l, (x + i), i, (y + 1));
}
if (t->r != NULL){
print(t->r, (x + i), i, (y + 1));
}
gotoxy(x, y * 2);
printf("%d -> ", t->value);
}
如何我的任何想法可以實現樹輸出基於我當前的輸出代碼,但我認爲我需要做更多的事情,如果將其轉換爲樹狀。任何事情都會有所幫助,一個指導或一個想法真的會受到讚賞。
謝謝
嘗試打印水平第一,這很容易。將縮進級別的信息傳遞給'print'函數,當然還可以打印縮進並用換行符結束打印格式。另外,應該在遞歸調用之間進行打印,而不是在遞歸調用之後進行打印。 –
如果將35,41和50添加到數據集,您希望答案看起來像什麼。 –
@Meehm,這有什麼用?假設你在「30」節點上,它不應該打印換行符,因爲「60」還沒有被處理。 –