二叉树的创建、先中后遍历、左右子树交换

更新时间:2023-08-14 06:13:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

二叉树的创建、先中后遍历、左右子树交换编程实现

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

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

(3)编写二叉树的左右子树交换算法 上面这些都比较简单,程序如下:

#include <stdio.h>

#include <malloc.h>

typedefstruct 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); }

本文来源:https://www.bwwdw.com/article/yodj.html

Top