数据结构二叉树c语言-创新互联
头文件
创新互联公司是专业的桥东网站建设公司,桥东接单;提供成都做网站、成都网站制作、成都外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行桥东网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!#include#includetypedef struct tree_node{char data;
struct tree_node *lchild;
struct tree_node *rchild;
}Tree_Node;
void CreateBTree(Tree_Node *&b, char *str)
{Tree_Node *St[100], *p; //St数组作为顺序栈,保存双亲结点
int top = -1, k, i= 0; //top为栈顶指针
char ch;
b = NULL; //初始时二叉链为空
ch = str[i];
while (ch != '\0') //循环处理,直到str中的每个字符扫描完毕
{switch (ch)
{case '(':top++; St[top] = p; k = 1; break; //开始处理左孩子结点
case ')':top--; break; //栈顶结点的子树处理完毕
case ',': k = 2; break; //开始处理右孩子结点
default:
p = (Tree_Node *)malloc(sizeof(Tree_Node)); //创建一个结点由p指向它
p->data = ch; //存放结点值
p->lchild = p->rchild = NULL; //左右指针都设置为空
if (b == NULL) //尚未设置根结点
b = p; //p作为根结点
else
{ switch (k)
{ case 1:St[top]->lchild = p; break; //新建结点作为栈顶结点的左孩子
case 2:St[top]->rchild = p; break; //新建结点作为栈顶结点的右孩子
}
}
}
i++;
ch = str[i];
}
}
void ShowXianXu(Tree_Node *&T) // 先序遍历二叉树
{if (T == NULL) return;
printf("%c ",T->data);
ShowXianXu(T->lchild); // 递归遍历左子树
ShowXianXu(T->rchild); // 递归遍历右子树
}
// 中序遍历
void ShowZhongXu(Tree_Node *&T) // 先序遍历二叉树
{if (T == NULL) return;
ShowZhongXu(T->lchild); // 递归遍历左子树
printf("%c ",T->data);
ShowZhongXu(T->rchild); // 递归遍历右子树
}
// 后序遍历
void ShowHouXu(Tree_Node *&T) // 后序遍历二叉树
{if (T == NULL) return;
ShowHouXu(T->lchild); // 递归遍历左子树
ShowHouXu(T->rchild); // 递归遍历右子树
printf("%c ",T->data);
}
主函数
#include"tree.h"
int main(){Tree_Node *t;
char c[20] = "A(B(D(,G)),C(E,F))";
CreateBTree(t,c);
printf("先序遍历结果: \n");
ShowXianXu(t); // 先序遍历二叉树
printf("\n中序遍历结果: \n");
ShowZhongXu(t); // 中序遍历二叉树
printf("\n后序遍历结果: \n");
ShowHouXu(t);
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:数据结构二叉树c语言-创新互联
分享网址:http://pwwzsj.com/article/ccoioh.html