三九宝宝网宝宝教育教学论文

急急急:关于二叉树的算法遍历左右子树交换用类C语言要详细代码

01月07日 编辑 39baobao.com

(1)编写建立二叉树的算法。

(2)验证二叉树的先序、中序、后序遍历算法

(3)编写二叉树的左右子树交换算法

上面这些都比较简单,程序如下:

#include

#include

typedef struct tree

{

char data;

struct tree *l;/*左儿子*/

struct tree *r;/*右儿子*/

}tr;

/*先序建立二叉树*/

tr *create(tr *t)

{

tr *k=NULL;

char ch;

scanf("%s",&ch);

if(ch=='#')

{

t=NULL;

}

else

{

t=(tr *)malloc(sizeof(tr));

t->data=ch;

t->l=create(k);

t->r=create(k);

}

return t;

}

/*先序遍历*/

void preOrder(tr *t)

{

if(t)

{

printf("%c\t",t->data);

preOrder(t->l);

preOrder(t->r);

}

}

/*中序遍历*/

void inOrder(tr *t)

{

if(t)

{

inOrder(t->l);

printf("%c\t",t->data);

inOrder(t->r);

}

}

/*后序遍历*/

void postOrder(tr *t)

{

if(t)

{

postOrder(t->l);

postOrder(t->r);

printf("%c\t",t->data);

}

}

/*左右子树交换*/

void switchChild(tr *t)

{

if(t)

{

tr *temp;

temp=t->l;

t->l=t->r;

t->r=temp;

switchChild(t->l);

switchChild(t->r);

}

}

main()

{

tr *head=NULL;

head=create(head);

printf("\n The preOrder is:");

preOrder(head);

printf("\n The inOrder is:");

inOrder(head);

printf("\n The postOrder is:");

postOrder(head);

printf("\n");

switchChild(head);

}

层次遍历也不难,但需要用到堆栈。

如果自己写堆栈的操作,也不难,但比较麻烦了。

补充:

已经写的代码,是完全符合的啊。

层次遍历,要用到堆栈,嫌麻烦就没有写了!

推荐阅读
图文推荐