⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 打印二叉树结构.cpp

📁 用来打印二叉树结构的程序。把打印二叉树形状给打印出来!
💻 CPP
字号:
#define maxsize 10
#include"stdio.h"
#include"malloc.h"
#define NULL 0


//二叉树的数据结构
typedef struct node{
	char data;//数据
	struct node *lchild,*rchild;//左右子树
	int du;//该节点的度
}Bitree;

Bitree *Q[maxsize];						// 队列Q为指针类型	
Bitree *creatree(){							//建立二叉树,返回根指针
	char ch;
int front,rear;
Bitree *T,*s;
	T=NULL;							//置空二叉树	
	front=1;rear=0;						//置空队列
	ch=getchar();							//输入第一个字符
	while(ch!='#'){						//不是结束符号时继续
		s=NULL;						//如果输入的是虚结点,则无需为虚结点申请空间
		if(ch!='@')						//@表示虚结点,不是虚结点时建立新结点
		{
			s=(Bitree *)malloc(sizeof(Bitree));
			s->data=ch;s->lchild=s->rchild=NULL;
			
			s->du=0;						 //将根结点 du置0
		}
		rear++;Q[rear]=s;					//将虚结点指针NULL或新结点地址入队
		if(rear==1) T=s;					//输入的第一个结点为根结点
		else{
			if(s!=NULL&&Q[front]!=NULL)		//孩子和双亲结点均不是虚结点
				{
					if(rear%2==0) Q[front]->lchild=s;
					else Q[front]->rchild=s;
					s->du=Q[front]->du+1;	//存储各结点度
				}
				if(rear%2==1) front++;		//结点*Q[front]的两个孩子已处理完毕front+1
		}
		ch=getchar();
	}
	return T;
}


void inorder(Bitree *T){
	if(T)								//若二叉树不空
	{
		inorder(T->rchild);			//RDL遍历左子树
		
		for(int i=0;i<T->du;i++)			//利用结点的度来控制结点的横向位置
		{
			printf("\t");
		}

		printf("%4c\n",T->data);			//访问根
		inorder(T->lchild);			//RDL遍历右子树
	}
}


void main()
{
	Bitree *TR;printf("请输入结点信息:\n");
	TR=creatree();printf("打印结果为:\n");
	inorder(TR);printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -