二叉树的建立(广义表)及3种遍历
来源:互联网 发布:达内java培优班怎么样 编辑:程序博客网 时间:2024/05/07 07:01
/*****************************************************
Copyright (C)
FileName: BiTree.c
Author: Luqing Date:2006/4/11
Description: // The basic operations of Bi_Tree
Version: // v1.0
Function List: // creatree, preorder, inorder, postorder
******************************************************/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *left,*right;
} BiTreeNode,*BiTree;
struct node * creatree(char *str)
{
BiTreeNode *stack[MaxSize],*p;
BiTreeNode *BT;
int top=-1,k,j=0;//top为栈指针,k指定是左还是右孩子,j为str指针
char ch;
BT=NULL;
ch=str[j];
while (ch!='/0')
{
switch(ch)
{
case '(':top++;stack[top]=p;k=1; //为左结点
break;
case ')':top--;
break;
case ',':k=2; //为右结点
break;
default: p=(BiTreeNode *)malloc(sizeof(BiTreeNode));
p->data=ch;p->left=p->right=NULL;
if (BT==NULL) //根结点//
BT=p;
else
{
switch(k)
{
case 1:stack[top]->left=p;
break;
case 2:stack[top]->right=p;
}
}
}
j++;
ch=str[j];
}
return BT;
}
void preorder(BiTreeNode *BT)
{
if (BT!=NULL)
{
printf("%c",BT->data);
preorder(BT->left);
preorder(BT->right);
}
}
void inorder(BiTreeNode *BT)
{
if (BT!=NULL)
{
inorder(BT->left);
printf("%c",BT->data);
inorder(BT->right);
}
}
void postorder(BiTreeNode *BT)
{
if (BT!=NULL)
{
postorder(BT->left);
postorder(BT->right);
printf("%c",BT->data);
}
}
int main()
{
BiTreeNode *B;
//char *s="A(B,C)";
char *s="A(B(E,F),C(D(G,),)";
B=creatree(s);
printf("/n前序遍历:");
preorder(B);
printf("/n中序遍历:");
inorder(B);
printf("/n后序遍历:");
postorder(B);
printf("/n");
return 0;
}
- 二叉树的建立(广义表)及3种遍历
- 广义表建立二叉树
- 广义表建立二叉树
- 二叉树的建立及遍历(二叉树)
- 输入二叉树的广义表建立二叉树
- 二叉树 的建立及遍历 过程
- 二叉树的建立及递归遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历实现
- 线索二叉树的建立及遍历
- 二叉树的建立,及相关遍历
- 二叉树的建立及递归遍历
- 二叉树的存储、遍历及建立
- 二叉树的建立及递归遍历
- 二叉树的建立及前中后序遍历
- 二叉树的建立及遍历
- 二叉树的建立及遍历
- 二叉树的建立删除及三种遍历实现
- 用VC6调试CGI程序
- 机器嗅觉探源之六——气味电子化(2)网络传送
- 浅谈base64
- How to call function from register view
- 非常不错的Javascript脚本
- 二叉树的建立(广义表)及3种遍历
- C#编码及命名规范
- 小波分析的起源、发展与应用
- LotusScript 操作 OpenOffice calc
- C programming deep secrets里有趣的小故事.
- Web Services是什么
- 国家法定节假日调整,五一假期变为1天
- MS SQL Server命名及编码规范
- Response.WriteFile的应用