【C++】二叉树的先序遍历、中序遍历、后序遍历

发布时间:2024年01月14日
#include<iostream>
using namespace std;

typedef char TElemType;

typedef struct BiTNode
{
	TElemType data;
	struct BiTNode* lchild, * rchild;
}BiTNode,*BiTree;

void CreatBiTree(BiTree& T)//创建二叉树
{
	char ch;
	cin >> ch;
	if (ch == '#')T = NULL;
	else
	{
		T = new BiTNode;
		T->data = ch;
		CreatBiTree(T->lchild);
		CreatBiTree(T->rchild);
	}
}

void PreOrderTraverse(BiTree T)//先序遍历
{
	if (T)
	{
		cout << T->data;
		PreOrderTraverse(T->lchild);
		PreOrderTraverse(T->rchild);
	}
}

void InOrderTraverse(BiTree T)//中序遍历
{
	if (T)
	{
		InOrderTraverse(T->lchild);
		cout << T->data ;
		InOrderTraverse(T->rchild);
	}
}

void PostOrderTraverse(BiTree T)//后序遍历
{
	if (T)
	{
		PostOrderTraverse(T->lchild);
		PostOrderTraverse(T->rchild);
		cout << T->data;
	}
}

int main1()
{
	BiTree T;
	cout << "请输入:"<<endl;
	CreatBiTree( T);
	cout << endl;
	cout << "先序遍历的结果为:" ;
	PreOrderTraverse( T);
	cout << endl;
	cout << "中序遍历的结果为:" ;
	InOrderTraverse(T);
	cout << endl;
	cout << "后序遍历的结果为:" ;
	PostOrderTraverse(T);
	return 0;
}

文章来源:https://blog.csdn.net/Ll801003/article/details/135564216
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。