本文主要是介绍【06】先序遍历建立二叉树,并进行三种遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
main函数
int main()
{ Bitree* T=NULL;printf("输入二叉树的先序遍历结点,建立二叉树。(子树为空时输入@)\n");T=CreateBtree_DLR(T);printf("\n先序遍历的结果:\n");PreOrder(T);printf("\n中序遍历的结果:\n");InOrder(T);printf("\n后序遍历的结果:\n");PostOrder(T);
return 0;
}
先序遍历建立二叉树
Bitree* CreateBtree_DLR(Bitree* root)
{ char ch;scanf("%c",&ch);if(ch=='@')root=NULL;else{root=(Bitree*)malloc(sizeof(Bitree));root->data=ch;root->lchild=CreateBtree_DLR(root->lchild); //构造左子树root->rchild=CreateBtree_DLR(root->rchild); //构造右子树}return(root);
}
通过循环调用建立二叉树
void PreOrder(Bitree* T) //先序遍历二叉树
{if ( T!=NULL ) { printf("%c ",T->data);PreOrder(T->lchild);PreOrder(T->rchild);}
}
void InOrder(Bitree* T) //中序遍历二叉树
{if ( T!=NULL ) { InOrder(T->lchild);printf("%c ",T->data); InOrder(T->rchild);}
}
void PostOrder(Bitree* T) //后序遍历二叉树
{if ( T!=NULL ) { PostOrder(T->lchild); PostOrder(T->rchild);printf("%c ",T->data); }
}
全部代码
#include <stdio.h>
#include <stdlib.h>
typedef char Elemetype;typedef struct BiTNode //定义二叉链表的结构体
{ Elemetype data;struct BiTNode *lchild,*rchild;}Bitree;
Bitree* CreateBtree_DLR(Bitree* root); //以先序遍历建立二叉树
void PreOrder(Bitree* T); //先序遍历二叉树
void InOrder(Bitree* T); //中序遍历二叉树
void PostOrder(Bitree* T); //后序遍历二叉树int main()
{ Bitree* T=NULL;printf("输入二叉树的先序遍历结点,建立二叉树。(子树为空时输入@)\n");T=CreateBtree_DLR(T);printf("\n先序遍历的结果:\n");PreOrder(T);printf("\n中序遍历的结果:\n");InOrder(T);printf("\n后序遍历的结果:\n");PostOrder(T);
return 0;
}
Bitree* CreateBtree_DLR(Bitree* root)
{ char ch;scanf("%c",&ch);if(ch=='@')root=NULL;else{root=(Bitree*)malloc(sizeof(Bitree));root->data=ch;root->lchild=CreateBtree_DLR(root->lchild); //构造左子树root->rchild=CreateBtree_DLR(root->rchild); //构造右子树}return(root);
}
void PreOrder(Bitree* T) //先序遍历二叉树
{if ( T!=NULL ) { printf("%c ",T->data);PreOrder(T->lchild);PreOrder(T->rchild);}
}
void InOrder(Bitree* T) //中序遍历二叉树
{if ( T!=NULL ) { InOrder(T->lchild);printf("%c ",T->data); InOrder(T->rchild);}
}
void PostOrder(Bitree* T) //后序遍历二叉树
{if ( T!=NULL ) { PostOrder(T->lchild); PostOrder(T->rchild);printf("%c ",T->data); }
}
运行结果
看完点赞,谢谢!
这篇关于【06】先序遍历建立二叉树,并进行三种遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!