实现链式储存创建,递归先序 中序 后序遍历,叶子结点数,数的结点总数,交换左右子树
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int cnt;
//结点声明,数据域 左子树 右子树
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
//创建二叉树
/*void Init(BiTree T)
{
T=NULL;
return;
}*/
BiTree Creat_BiTree()
{
BiTree T;
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiNode *)malloc(sizeof(BiNode));//为结点申请一个sizeof(BiNode)大小的空间
T->data=ch;
T->lchild=Creat_BiTree();//建立左子树
T->rchild=Creat_BiTree();//建立右子树
}
return T;
}
//先序遍历
void Pre_order(BiTree T)
{
if(T)
{
printf("%c",T->data);
Pre_order(T->lchild);
Pre_order(T->rchild);
}
}
//中序遍历
void In_order(BiTree T)
{
if(T)
{
In_order(T->lchild);
printf("%c",T->data);
In_order(T->rchild);
}
}

本文详细介绍了如何使用链式存储实现二叉树的创建,并通过递归方式完成先序、中序和后序遍历。此外,还讨论了如何计算二叉树的叶子节点数量以及树的总节点数,以及如何交换二叉树的左右子树。

被折叠的 条评论
为什么被折叠?



