我的目标是:当我输入“e c d g a f b”时,输出为
e
(\t) c <- first left node
(\t)(\t) a <- second left node
(\t)(\t)(\t) b <- third right node
(\t)(\t) d <- second right node
(\t) g <- first right node
(\t)(\t) f <- second left node
但我不能按预期工作。
这是Brian W. Kernighan和Dennis M. Ritchie的“C编程语言”中的一个例子。
我改变了我的功能,我怎么能在输出窗口看到\ t。
我的尝试:
void prt(AW *p)
{
int j;
int temp;
if(p != NULL)
{
temp = judge;
while(1)
{ temp = temp / 2;
count++;
if(temp == 0)
break;
}
for(j=1; j<count; j++)
putchar('\t');
printf("%-16s\n",p->word);
count=0;
if(p->left != NULL)judge++;
prt(p->left);
if(p->right != NULL)judge++;
prt(p->right); }
}
答案 0 :(得分:3)
假设您在下面有这样的结构。
typedef struct
{
int data;
struct node * left;
struct node *right;
} node;
void printtreenode(node *root)
{
if(root == NULL)
return;
printtreenode(root -> left);
printf("%d\n",root -> data);
printtreenode(root ->right);
}
无需向printtreenode
传递2个参数,也可以看到它是递归的。
这应该有效,您可以根据格式化的输出进行修改。