数据结构(四)之二叉树

  • 二叉树

二叉树可以用数组和链式结构这两种方式来创建,这里只介绍二叉树的链式结构,并且实现二叉树的前序、中序和后序遍历。(运用二叉树组定义静态二叉树的方式以注释的形式写明)
二叉树的创建有三种方式:前序、中序和后序。这里只展现了前序遍历的方式。

#include<stdio.h>
#include<stdlib.h>
typedef struct btnode{
	//int data[1000];二叉树组,从上到下,从左到右依次存在数组里
	char data;
	//int llink,rlink;静态二叉树,分别存放左子树和右子树
	struct btnode *lchild;
	struct btnode *rchild; 
}BTnode,*BiTree;//tree[n+1];静态二叉树n个结点
void preorder(BiTree T);
void midorder(BiTree T);
void suborder(BiTree T);
void createtree(BiTree &T);
int main(){
	BiTree T;
	/*以下是测试代码
	createtree(T);
	preorder(T);
	printf("\n");
	midorder(T);
	printf("\n");
	suborder(T);
	printf("\n");
	*/
	return 0;
}
void preorder(BiTree T){
    if(T!=NULL){
    	printf("%c ",T->data);
    	preorder(T->lchild);
    	preorder(T->rchild);
	}
} 
void midorder(BiTree T){
	if(T!=NULL){
		midorder(T->lchild);
    	printf("%c ",T->data);
    	midorder(T->rchild);
	}
}
void suborder(BiTree T){
	if(T!=NULL){
		suborder(T->lchild);
    	suborder(T->rchild);
    	printf("%c ",T->data);
	}
}
void createtree(BiTree &T){//先序遍历创建 
	char ch;
	ch=getchar();
	if(ch=='#') T=NULL;
	else{
		T=(struct btnode*)malloc(sizeof(struct btnode));
		T->data=ch;
		createtree(T->lchild);
		createtree(T->rchild);
	}
}

猜你喜欢

转载自blog.csdn.net/m0_37650503/article/details/84435568