内容简介
本次作业在二叉树的建立方面,我使用了先序输入的方法来建立,即使用递归来实现。在遍历输出方面,有先序、中序、和后序三种。
其中,本次建立二叉树时,输入结束的条件为输入数据为0。
本程序创建的二叉树如下:
相关代码:
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;//输出根节点 } }
来源:https://www.cnblogs.com/lovevivi/p/10781171.html