二叉树的建立和遍历(递归)

本文介绍了一种使用C++实现二叉树的方法,并演示了先序、中序及后序遍历的过程。通过递归函数实现树的构建与遍历,提供了完整的代码示例。
#include <iostream>
#include <iomanip>
using namespace std;

struct BinaryTreeNode
{
	char data;
	BinaryTreeNode* LeftChild;
	BinaryTreeNode* RightChild;
};

BinaryTreeNode* buildBinaryTree();
void Preorder(BinaryTreeNode* BT);
void Inorder(BinaryTreeNode* BT);
void Postorder(BinaryTreeNode* BT);

int main()
{
	BinaryTreeNode* BT = buildBinaryTree();

	cout<<setiosflags(ios::left)<<setw(10)<<"Preorder";
	Preorder(BT);
	cout<<endl;
	
	cout<<setiosflags(ios::left)<<setw(10)<<"Inorder";
	Inorder(BT);
	cout<<endl;

	cout<<setiosflags(ios::left)<<setw(10)<<"Postorder";
	Postorder(BT);	
	cout<<endl;

	system("pause");
	return 0;
}

BinaryTreeNode* buildBinaryTree()
{
	char data;
	BinaryTreeNode* BT;
	cin>>data;
	if ('0' == data)
		BT = NULL;
	else 
	{
		BT = new BinaryTreeNode;
		BT->data = data;
		BT->LeftChild = buildBinaryTree();
		BT->RightChild = buildBinaryTree();
	}
	return BT;
}

void Preorder(BinaryTreeNode* BT)
{
	if (NULL == BT)
		return;
	else 
	{
		cout<<BT->data<<" ";
		Preorder(BT->LeftChild);
		Preorder(BT->RightChild);
	}
}

void Inorder(BinaryTreeNode* BT)
{
	if (NULL == BT)
		return;
	else 
	{
		Inorder(BT->LeftChild);
		cout<<BT->data<<" ";
		Inorder(BT->RightChild);
	}
}

void Postorder(BinaryTreeNode* BT)
{
	if (NULL == BT)
		return;
	else 
	{
		Postorder(BT->LeftChild);
		Postorder(BT->RightChild);
		cout<<BT->data<<" ";
	}
}

假设如下一棵二叉树。采用先序建立。

















建立树的输入格式是:-+a00*b00-c00d00/e00f00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值