使用递归法建立二叉树

Posted ggad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用递归法建立二叉树相关的知识,希望对你有一定的参考价值。

相关代码:

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;//输出根节点
}
}

截图:
技术图片

以上是关于使用递归法建立二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树二叉树的镜像

二叉树二叉树基本操作通用接口

java编写非递归与递归创建有序的二叉树

二叉树及特殊二叉树(满二叉树完全二叉树二叉排序树平衡二叉树)的定义和性质(附详细推理过程)

LeetCode-树二叉树的最大深度

超强二叉树解析.必收藏!(数组,链表实现,8种遍历方法,前,中,后序线索化二叉树及其遍历)---风之java