#include<stdio.h>
#define TREEMAX 100
typedef struct BT
{
char data;
BT *lchild;
BT *rchild;
}BT;
BT *CreateTree();
void Preorder(BT *T);
void Postorder(BT *T);
void Inorder(BT *T);
void Leafnum(BT *T);
void Nodenum(BT *T);
int TreeDepth(BT *T);
int count=0;
void main()
{
BT *T=NULL;
char ch1,ch2,a;
ch1='y';
while(ch1=='y'||ch1=='y')
{
printf("\n");
printf("\n\t\t 二叉樹子系統");
printf("\n\t\t*****************************************");
printf("\n\t\t 1---------建二叉樹 ");
printf("\n\t\t 2---------先序遍歷 ");
printf("\n\t\t 3---------中序遍歷 ");
printf("\n\t\t 4---------后序遍歷 ");
printf("\n\t\t 5---------求葉子數 ");
printf("\n\t\t 6---------求結點數 ");
printf("\n\t\t 7---------求樹深度 ");
printf("\n\t\t 0---------返 回 ");
printf("\n\t\t*****************************************");
printf("\n\t\t 請選擇菜單號 (0--7)");
scanf("%c",&ch2);
getchar();
printf("\n");
switch(ch2)
{
case'1':
printf("\n\t\t請按先序序列輸入二叉樹的結點:\n");
printf("\n\t\t說明:輸入結點(‘0’代表后繼結點為空)后按回車。\n");
printf("\n\t\t請輸入根結點:");
T=CreateTree();
printf("\n\t\t二叉樹成功建立!\n");break;
case'2':
printf("\n\t\t該二叉樹的先序遍歷序列為:");
Preorder(T);break;
case'3':
printf("\n\t\t該二叉樹的中序遍歷序列為:");
Inorder(T);break;
case'4':
printf("\n\t\t該二叉樹的后序遍歷序列為:");
Postorder(T);break;
case'5':
count=0;Leafnum(T);
printf("\n\t\t該二叉樹有%d個葉子。\n",count);break;
case'6':
count=0;Nodenum(T);
printf("\n\t\t該二叉樹總共有%d個結點。\n",count);break;
case'7':
printf("\n\t\t該樹的深度為:%d",TreeDepth(T));
break;
case'0':
ch1='n';break;
default:
printf("\n\t\t***請注意:輸入有誤!***");
}
if(ch2!='0')
{
printf("\n\n\t\t按【Enter】鍵繼續,按任意鍵返回主菜單!\n");
a=getchar();
if(a!='\xA')
{
getchar();
ch1='n';
}
}
}
}
BT *CreateTree()
{
BT *t;
char x;
scanf("%c",&x);
getchar();
if(x=='0')
t=NULL;
else
{
t=new BT;
t->data=x;
printf("\n\t\t請輸入%c結點的左子結點:",t->data);
t->lchild=CreateTree();
printf("\n\t\t請輸入%c結點的右子結點:",t->data);
t->rchild=CreateTree();
}
return t;
}
void Preorder(BT *T)
{
if(T)
{
printf("%3c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void Inorder(BT *T)
{
if(T)
{
Inorder(T->lchild);
printf("%3c",T->data);
Inorder(T->rchild);
}
}
void Postorder(BT *T)
{
if(T)
{
Postorder(T->lchild);
Postorder(T->rchild);
printf("%3c",T->data);
}
}
void Leafnum(BT *T)
{
if(T)
{
if(T->lchild==NULL&&T->rchild==NULL)
count++;
Leafnum(T->lchild);
Leafnum(T->rchild);
}
}
void Nodenum(BT *T)
{
if(T)
{
count++;
Nodenum(T->lchild);
Nodenum(T->rchild);
}
}
int TreeDepth(BT *T)
{
int ldep,rdep;
if(T==NULL)
return 0;
else
{
ldep=TreeDepth(T->lchild);
rdep=TreeDepth(T->rchild);
if(ldep>rdep)
return ldep+1;
else
return rdep+1;
}
}
資源簡介:#include<stdio.h> #define TREEMAX 100 typedef struct? BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); int TreeDep...
上傳時間: 2020-06-11
上傳用戶:ccccy
資源簡介: 為了實現時序電路狀態驗證和故障檢測,需要事先設計一個輸入測試序列。基于二叉樹節點和樹枝的特性,建立時序電路狀態二叉樹,按照電路二叉樹節點(狀態)與樹枝(輸入)的層次邏輯關系,可以直觀和便捷地設計出時序電路測試序列。用測試序列激勵待測電路,可...
上傳時間: 2013-10-19
上傳用戶:qitiand
資源簡介:數據結構二叉樹實現。
上傳時間: 2013-11-04
上傳用戶:zhangxin
資源簡介:無遞歸二叉樹插入及中序等順帶求得深度等
上傳時間: 2015-01-06
上傳用戶:CSUSheep
資源簡介:這是一個二叉樹的遍歷問題
上傳時間: 2013-12-03
上傳用戶:王者A
資源簡介:二叉樹集合運算畢業論文
上傳時間: 2013-12-22
上傳用戶:xiaodu1124
資源簡介:二叉樹
上傳時間: 2015-01-09
上傳用戶:cursor
資源簡介:數據結構中的平衡二叉樹的代碼
上傳時間: 2015-01-11
上傳用戶:天誠24
資源簡介:有二叉樹計算表達式的值
上傳時間: 2014-01-18
上傳用戶:D&L37
資源簡介:本代碼演示了平衡排序二叉樹的實現,并用到了智能指針等技術
上傳時間: 2015-01-13
上傳用戶:2404
資源簡介:一個簡單二叉樹類(非本人原創)
上傳時間: 2013-12-27
上傳用戶:chenxichenyue
資源簡介:順序二叉樹和樹的復制及哈夫曼編碼
上傳時間: 2014-12-06
上傳用戶:bakdesec
資源簡介:數據結構二叉樹的實現
上傳時間: 2015-01-18
上傳用戶:宋桃子
資源簡介:C++二叉樹算法
上傳時間: 2015-01-20
上傳用戶:ANRAN
資源簡介:二叉樹的算法,先序建立,中序遍歷
上傳時間: 2013-12-25
上傳用戶:AbuGe
資源簡介:二叉樹的集合操作,附帶一份程序的試驗報告,相當優秀的程序,對深入理解二叉樹很有幫助。
上傳時間: 2014-01-20
上傳用戶:qoovoop
資源簡介:建立一個排序二叉樹
上傳時間: 2015-01-26
上傳用戶:zycidjl
資源簡介:二叉樹算法(java)
上傳時間: 2014-01-03
上傳用戶:dapangxie
資源簡介:二叉樹遍歷的方法
上傳時間: 2013-12-25
上傳用戶:1079836864
資源簡介:創建二叉樹的 Java程序
上傳時間: 2015-01-30
上傳用戶:壞壞的華仔
資源簡介:表達式二叉樹的實現。輸入任意一個前序中序或后序表達式,可生成對應的表達式二叉樹并樹狀打印,之后用戶可以選擇以前序中序或后序將表達式再次輸出。
上傳時間: 2015-01-30
上傳用戶:it男一枚
資源簡介:二叉樹遍歷的算法程序
上傳時間: 2014-08-26
上傳用戶:Altman
資源簡介:非遞歸前序,中序,后序遍歷二叉樹(優化算法)
上傳時間: 2014-08-01
上傳用戶:宋桃子
資源簡介:簡單的二叉樹實現
上傳時間: 2014-01-10
上傳用戶:wangchong
資源簡介:簡單二叉樹的連表算法
上傳時間: 2015-02-03
上傳用戶:aa17807091
資源簡介:二叉樹的生成與遍歷
上傳時間: 2015-02-03
上傳用戶:AbuGe
資源簡介:根據前序序列和中序序列生成二叉樹并進行遍歷。
上傳時間: 2013-12-12
上傳用戶:CHINA526
資源簡介:二叉樹的各種操作,實現插入,查找,刪除等功能
上傳時間: 2015-02-07
上傳用戶:playboys0
資源簡介:數據結構中二叉樹用c實現的算法
上傳時間: 2014-01-09
上傳用戶:playboys0
資源簡介:二叉樹的前序遍歷
上傳時間: 2015-02-08
上傳用戶:BOBOniu