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

📄 树的遍历.cpp

📁 树的四种遍历方式
💻 CPP
字号:
#include<iostream>
using namespace std;
#define NUM 7

typedef struct bitree
{
	int data;
	struct bitree *left;
	struct bitree *right;
}BITREENODE,*PBITREENODE;

PBITREENODE BiTree=NULL;
//声明函数原型;
void create_btree(int *A,int size);
void preorder(PBITREENODE pnode);
void inorder(PBITREENODE pnode);
void postorder(PBITREENODE pnode);
 
void levelorder(PBITREENODE pnode);
 
int main(void)
{
	int i;
	int A[NUM];
	cout<<"输入树的7个测试数据:";
	for(i=0;i<NUM;i++)
		cin>>A[i];
	cout<<endl;
	create_btree(A,NUM);

	cout<<"Tree 的中序遍历结果:"<<endl;
	inorder(BiTree);
	cout<<endl;
	cout<<"tree 的前序遍历结果:"<<endl;
	preorder(BiTree);
	cout<<endl;
	cout<<"tree 的后序遍历结果"<<endl;
	postorder(BiTree);
	cout<<endl;
	cout<<"tree 的按层遍历结果"<<endl;
	levelorder(BiTree);
	cout<<endl;
	return 0;
}
void create_btree(int *A,int size)
{
	int i;
	PBITREENODE ptr,ptr2;
	for(i=0;i<size;i++)
	{
		if(BiTree==NULL)
		{
			BiTree=new BITREENODE;
			if(BiTree==NULL)
			{
				cout<<"memory alloc fail";
				break;
			}
			BiTree->data=A[i];
			BiTree->left=NULL;
			BiTree->right=NULL;
			continue;
		}
		else
			ptr=BiTree;
		while(1)
		{
			if(A[i]>ptr->data)
			{
				if(ptr->right==NULL)
				{
					ptr2=new BITREENODE;
					if(ptr2==NULL)
					{
						cout<<"memory alloc fail";
						break;
					}
					ptr2->data=A[i];
					ptr2->left=NULL;
					ptr2->right=NULL;
					ptr->right=ptr2;
					break;
				}
				else
					ptr=ptr->right;
			}
			else
			{
				if(ptr->left==NULL)
				{
					ptr2=new BITREENODE;
					if(ptr2==NULL)
					{
						cout<<"memory alloc fail";
						break;
					}
					ptr2->data=A[i];
					ptr2->left=NULL;
					ptr2->right=NULL;
					ptr->left=ptr2;
					break;
				}
				else
					ptr=ptr->left;
			}
		}
	}
}
void postorder(PBITREENODE pnode)
{
	if(pnode!=NULL)
	{
		postorder(pnode->left);
		postorder(pnode->right);
		cout<<" "<<pnode->data;
	}
}
 

void preorder(PBITREENODE pnode)
{
	if(pnode!=NULL)
	{
		preorder(pnode->left);
		cout<<" "<<pnode->data;
		preorder(pnode->right);
	}
}
void inorder(PBITREENODE pnode)
{
	if(pnode!=NULL)
	{
		cout<<" "<<pnode->data;
		inorder(pnode->left);
		inorder(pnode->right);
	}
}
void levelorder(PBITREENODE pnode)
{
	PBITREENODE ptr,Tree[NUM];
	int i,front=-1,rear=0;
	for(i=0;i<NUM;i++)
		Tree[i]=NULL;
	ptr=pnode;
	while(ptr!=NULL)
	{
		cout<<" "<<ptr->data;
		if(ptr->left!=NULL)
			Tree[rear++]=ptr->left;
		if(ptr->right!=NULL)
			Tree[rear++]=ptr->right;
		if(front!=rear)
			ptr=Tree[++front];
	}
}

⌨️ 快捷键说明

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