创建一个树,用先序中序后序遍历它(c++)

#代码中创建的树的结构如下图:
在这里插入图片描述
#c++代码:
#include<#iostream>
using namespace::std;
typedef struct BTNode {
int data;//数据域
struct BTNode* pLchild;//左指针
struct BTNode* pRchild;//右指针
}BT, *PT;
PT createBT();
void preTraBTree(PT pT);
void midTraBTree(PT pT);
void bacTraBTree(PT pT);
int main() {
PT head = createBT();//拿到根节点地址
printf(“先序遍历:\n”);
preTraBTree(head);
printf(“中序遍历:\n”);
midTraBTree(head);
printf(“后序遍历:\n”);
bacTraBTree(head);
return 0;
}
void bacTraBTree(PT pT) {//后序遍历
if (pT->pLchild != nullptr) {
PT a = pT->pLchild;
bacTraBTree(a);
}
if (pT->pRchild != nullptr) {
PT b = pT->pRchild;
bacTraBTree(b);
}
printf(“节点数据为:%d\n”, pT->data);
}
void midTraBTree(PT pT) {//中序遍历
if (pT->pLchild != nullptr) {
PT a = pT->pLchild;
midTraBTree(a);
}
printf(“节点数据为:%d\n”, pT->data);
if (pT->pRchild != nullptr) {
PT b = pT->pRchild;
midTraBTree(b);
}
}
void preTraBTree(PT pT) {//先序遍历
printf(“节点数据为:%d\n”,pT->data);
if (pT->pLchild != nullptr) {
//PT a = pT->pLchild;
preTraBTree(pT->pLchild);
}
if (pT->pRchild != nullptr) {
//PT b = pT->pRchild;
preTraBTree(pT->pRchild);
}
}
PT createBT() {//手动创建一个树,动态树下次更新
PT pA = new BT;
PT pB = new BT;
PT pC = new BT;
PT pD = new BT;
PT pE = new BT;
pA->data = ‘A’;
pB->data = ‘B’;
pC->data = ‘C’;
pD->data = ‘D’;
pE->data = ‘E’;
pA->pLchild = pB;
pA->pRchild = pC;
pB->pLchild = pB->pRchild = nullptr;
pC->pLchild = pD;
pC->pRchild = nullptr;
pD->pLchild = nullptr;
pD->pRchild = pE;
pE->pLchild = pE->pRchild = nullptr;
return pA;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值