二叉树基本运算的实现
算法设计:程序中设计了四个函数:
1.函数CreateBiTree()用来实现利用先序的方式创建二叉树;(利用“扩展先序遍历序列”建立二叉链表,用#表示子树为空)
2.函数PreOrder()用来实现先序遍历的递归算法遍历输出二叉树。
3.函数OreOrder()用来实现中序遍历的递归算法遍历输出二叉树。
4.函数QreOrder()用来实现后序遍历的递归算法遍历输出二叉树。
建立二叉树的二叉链表存储结构如下:
typedef struct BiTNode
{ TElemType data;
Struct BiTNode *Ichild,*rchild;/左右孩子指针*/
}BiTNode, *BiTree;
代码实现:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
TElemType data;
struct BiTNode*rchild,*lchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree*T)
{
char ch;
ch=getchar();
if(ch=='#')(*T)=NULL;
else
{
(*T)=(BiTree) malloc(sizeof(BiTNode));
(*T)->data=ch;
CreateBiTree(&(*T)->rchild);
CreateBiTree(&(*T)->lchild);
}
}
void PreOrder(BiTree T)
{
if(T)
{
printf("%2c",T->data);PreOrder(T->rchild);
PreOrder(T->lchild);
}
}
void QreOrder(BiTree T)
{
if(T)
{ PreOrder(T->rchild);
printf("%2c",T->data);
PreOrder(T->lchild);
}
}
void OreOrder(BiTree T)
{
if(T)
{ PreOrder(T->rchild);
PreOrder(T->lchild);
printf("%2c",T->data);
}
}
void main()
{
BiTree T=NULL;
printf("\n创建一颗二叉树:\n");
CreateBiTree(&T);
printf("\n先序遍历结果为:\n");
PreOrder(T);
printf("\n中序遍历结果为:\n");
QreOrder(T);
printf("\n后序遍历结果为:\n");
OreOrder(T);
}
运行结果:
本周学习内容:复习了数据结构 继续学习了CSS 辅助了前端的设计