二叉树 遍历问题
#include <stdio.h>#include <stdlib.h>
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *lchild, *rchild;
}node, *btree;
void CreateBtree(btree *root)
{
ElemType c;
scanf("%c", &c);
if(c == '#'){
*root = NULL;
}else{
*root = (btree)malloc(sizeof(node));
(*root)->data = c;
CreateBtree(&(*root)->lchild);
CreateBtree(&(*root)->rchild);
}
}
void CreateBtree2(node head[], int n, ElemType c[])
{
int i;
btree ptr;
for(i=1; i<n; i++)
{
ptr = &head;
ptr->data = c;
ptr->lchild = NULL;
ptr->rchild = NULL;
}
for(i=1; i<n; i++)
{
ptr = &head;
//printf("==== %c\n", ptr->data);
if(2*i+1 < n)
{
btree l = ptr->lchild = &head;
//printf("L%c\n", l->data);
btree r = ptr->rchild = &head;
//printf("R%c\n", r->data);
}
}
}
void in(btree root)
{
if(root)
{
in(root->lchild);
printf("[%c] ", root->data);
in(root->rchild);
}
}
void pos(btree root)
{
if(root)
{
in(root->lchild);
in(root->rchild);
printf("[%c] ", root->data);
}
}
int main(void)
{
node head;
btree ptr, newnode;
int i;
ElemType c[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o'};
CreateBtree2(head, 8, c);
in(&head);
putchar('\n');
pos(&head);
putchar('\n');
return 0;
}
我相信你不相信这个结果
调用错函数了 ^_^
void pos(btree root)
{
if(root)
{
/*in(root->lchild);
in(root->rchild);*/
pos(root->lchild);
pos(root->rchild);
printf("[%c] ", root->data);
}
} 可以看得出,你在写 pos 函数时是复制的 in 函数,然后忘记改了
^_^
人造人 发表于 2018-7-10 16:50
我相信你不相信这个结果
调用错函数了 ^_^
自己太粗心!!
谢谢! ^_^
页:
[1]