#include <stdio.h>
#include <stdlib.h>
#include<bits/stdc++.h>
using namespace std;
typedef struct BiTNode{ //定义二叉树
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void InitNode(BiTree &root,int i) //初始化一个节点
{
root=(BiTree)malloc(sizeof(BiTNode));
root->data=i;
root->lchild=NULL;
root->rchild=NULL;
}
void InitT(BiTree &root) //初始化一个树
{
root=(BiTree)malloc(sizeof(BiTNode));
root->data=0;
BiTNode *N1; //初始化各个节点
InitNode(N1,1);
BiTNode *N2;
InitNode(N2,2);
BiTNode *N3;
InitNode(N3,3);
BiTNode *N4;
InitNode(N4,4);
BiTNode *N5;
InitNode(N5,5);
//开始建立各个节点的关系
root->lchild=N1;
root->rchild=N2;
N1->lchild=N3;
N1->rchild=N4;
N2->lchild=N5;
}
int visitT(BiTree root) //访问二叉树
{
cout<<root->data<<" ";
}
void preorder(BiTree T) //先序遍历 根-左-右
{
if(T!=NULL)
{
visitT(T);
preorder(T->lchild);
preorder(T->rchild);
}
}
void midorder(BiTree T) //中序遍历 左-根-右
{
if(T!=NULL)
{
midorder(T->lchild);
visitT(T);
midorder(T->rchild);
}
}
void lastorder(BiTree T) //后序遍历 左-右-根
{
if(T!=NULL)
{
lastorder(T->lchild);
lastorder(T->rchild);
visitT(T);
}
}
main()
{
BiTree root=NULL; //定义一个节点
InitT(root);
cout<<"先序遍历结果: ";
preorder(root);
cout<<endl;
cout<<"中序遍历结果: ";
midorder(root);
cout<<endl;
cout<<"后序遍历结果: ";
lastorder(root);
cout<<endl;
}
数据结构5.2-二叉树前中后序遍历
最新推荐文章于 2024-11-04 15:37:16 发布