手动建立二叉树,并采用前序、中序、后序输出二叉树

本文详细介绍了如何使用C++创建一个特定的二叉树结构,并实现了前序、中序和后序遍历算法。通过具体的代码示例,读者可以深入理解二叉树的数据结构及其遍历方式。

**

建立如图所示二叉树`在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>

using namespace std;

struct NodeBinaryTree
{
	NodeBinaryTree *_left;
	NodeBinaryTree *_right;
	int _date;
};

NodeBinaryTree *CreatBinary()
{
	NodeBinaryTree *pa = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pb = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pc = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pd = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pe = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pf = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	NodeBinaryTree *pg = (NodeBinaryTree *)malloc(sizeof(NodeBinaryTree));
	pa->_date = 'A';
	pb->_date = 'B';
	pc->_date = 'C';
	pd->_date = 'D';
	pe->_date = 'E';
	pf->_date = 'F';
	pg->_date = 'G';
	pa->_left = pb;
	pa->_right = pc;
	pb->_left = pd;
	pb->_right = pe;
	pc->_left = NULL;
	pc->_right = pf;
	pd->_left = NULL;
	pd->_right = NULL;
	pe->_left = pg;
	pe->_right = NULL;
	pf->_left = pf->_right = NULL;
	pg->_left = pg->_right = NULL;
	return pa;
}

void PreTraverTree(NodeBinaryTree *pt)
{
	if (pt != NULL)
	{
		printf("%4c", pt->_date);
		if (pt->_left != NULL) PreTraverTree(pt->_left);
		if (pt->_right != NULL) PreTraverTree(pt->_right);
	}
}

void InTraverTree(NodeBinaryTree *pt)
{
	if (pt != NULL)
	{
		if (pt->_left != NULL) InTraverTree(pt->_left);
		printf("%4c", pt->_date);
		if (pt->_right != NULL) InTraverTree(pt->_right);
	}
}

void EndTraverTree(NodeBinaryTree *pt)
{
	if (pt != NULL)
	{
		if (pt->_left != NULL) EndTraverTree(pt->_left);
		if (pt->_right != NULL) EndTraverTree(pt->_right);
		printf("%4c", pt->_date);
	}
}

int main()
{
	NodeBinaryTree *ps=CreatBinary();
	cout << "前序遍历:";
	PreTraverTree(ps);
	cout << endl;
	cout << "中序遍历:";
	InTraverTree(ps);
	cout << endl;
	cout << "后序遍历:";
	EndTraverTree(ps);
	cout << endl;
	return 0;
}

**

最后结果如下图

在这里插入图片描述

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值