#代码中创建的树的结构如下图:
#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;
}
创建一个树,用先序中序后序遍历它(c++)
最新推荐文章于 2021-11-15 14:18:26 发布