数据结构二叉树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://azwzsj.com/article/ccoioh.html