1. 程式人生 > >使用遞歸法建立二叉樹

使用遞歸法建立二叉樹

postorder 表示 esp namespace truct nor ios 元素 har

相關代碼:

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;

cin>>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;//輸出根節點
}
}

截圖:
技術分享圖片

使用遞歸法建立二叉樹