使用遞歸法建立二叉樹
相關代碼:
include
using namespace std;
typedef struct node//創建節點結構
{
char data;//數據元素
struct node Lchild;//指向左孩子結點
struct node Rchild;//指向右孩子結點
}BinNode,*BinTree;
void CreateTree(BinTree &T);//遞歸法建立二叉樹
void PreOrder(BinTree &T);//先序遍歷
void InOrder(BinTree &T);//中序遍歷
void PostOrder(BinTree &T);//後序遍歷
int main()
BinTree T;
cout<<"請輸入二叉樹節點:";
CreateTree(T);
cout<<"先序遍歷:";
PreOrder(T);
cout<<endl;
cout<<"中序遍歷:";
InOrder(T);
cout<<endl;
cout<<"後序遍歷:";
PostOrder(T);
cout<<endl;
return 0;
}
void CreateTree(BinTree &T)//創建二叉樹
{
char str;
if(str==‘0‘)//當輸入0時,表示遞歸結束
T=NULL;
else
{
T=new BinNode;
T->data=str;
CreateTree(T->Lchild);//建立左子樹
CreateTree(T->Rchild);//建立右子樹
}
}
void PreOrder(BinTree &T)//先序遍歷
{
if(T!=NULL)
{
cout<<T -> data;//輸出根節點
PreOrder(T -> Lchild);//先序遍歷左子樹
PreOrder(T -> Rchild);//先序遍歷右子樹
}
void InOrder(BinTree &T)//中序遍歷
{
if(T!=NULL)
{
InOrder(T -> Lchild);//中序遍歷左子樹
cout<<T -> data;//輸出根節點
InOrder(T -> Rchild);//中序遍歷右子樹
}
}
void PostOrder(BinTree &T)//後序遍歷
{
if(T!=NULL)
{
PostOrder(T -> Lchild);//後序遍歷左子樹
PostOrder(T -> Rchild);//後續遍歷右子樹
cout<<T -> data;//輸出根節點
}
}
截圖:
使用遞歸法建立二叉樹