-
大小: 5KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-01-02
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
建立一棵二叉樹,試編程實(shí)現(xiàn)二叉樹的如下基本操作:
1. 按先序序列構(gòu)造一棵二叉鏈表表示的二叉樹T;
2. 對(duì)這棵二叉樹進(jìn)行遍歷:先序、中序、后序以及層次遍歷,分別輸出結(jié)點(diǎn)的遍歷序列;
3. 求二叉樹的深度/結(jié)點(diǎn)數(shù)目/葉結(jié)點(diǎn)數(shù)目;
4. 將二叉樹每個(gè)結(jié)點(diǎn)的左右子樹交換位置。
代碼片段和文件信息
#include
#include?
#define?exit?0
using?namespace?std;
typedef?struct?BiTNode{
char?data;
struct?BiTNode?*lchild*rchild;//左右孩子指針
}BiTNode*BiTree;
void?CreateBiTree(BiTree?&T)
{
//按先序次序輸入二叉樹中結(jié)點(diǎn)的值(一個(gè)字符),空格字符表示空樹
//構(gòu)造二叉鏈表表示的二叉樹
char?ch;
cin>>ch;
if(ch==‘#‘)T=NULL;
else
{
??T=new?BiTNode;
??if(!T)exit(1);
??T->data=ch;????????????????????//生成根結(jié)點(diǎn)
??CreateBiTree(T->lchild);
??CreateBiTree(T->rchild);
}
}
void?PreOrderTraverse(BiTree?T)
{//先序遍歷二叉樹
if(T!=NULL)?{
???cout<data;
???PreOrderTraverse(T->lchild);?
???PreOrderTraverse(T->rchild);
}
}
void?InOrderTraverse(BiTree?T)
{//中序遍歷二叉樹
if(T!=NULL)?
{
???InOrderTraverse(T->lchild);
???cout<data;?
???InOrderTraverse(T->rchild);
}
}
void?PostOrderTraverse(BiTree?T
評(píng)論
共有 條評(píng)論