實驗內容與要求
問題描述:
建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作:
1. 按先序序列構造一棵二叉鍊錶表示的二叉樹t;
2. 對這棵二叉樹進行遍歷:先序、中序、後序遍歷,分別輸出結點的遍歷序列;
3. 求二叉樹的葉結點數目;
要求:
n設計要求
首先設計乙個含有多個選單項的主控選單程式,然後再為這些選單項配上相應的功能。
1.建立二叉樹(先序)
2.先序遍歷並輸出遍歷序列
3.中序遍歷並輸出遍歷序列
4.後序遍歷並輸出遍歷序列
5. 統計二叉樹的葉子結點數
6.退出
請選擇選單1—6:
n功能要求
完成各選單的功能,並能正確顯示遍歷結果和葉子數目
從鍵盤接受輸入(先序),以二叉鍊錶作為儲存結構,建立二叉樹(以先序來建立),
如輸入:abc∅∅de∅g∅∅f∅∅∅(其中∅表示空格字元)
二叉鍊錶結點定義:
typedef struct bitnodebitnode,*bitree;
n實現要求
1) 用vc++的引用實現各功能的呼叫
2) 測試資料:
ab∅∅cdf∅∅∅eg∅∅h∅∅(其中∅表示空格字元)
先序序列:abcdfegh
中序序列:bafdcgeh
後序序列:bfdgheca
n實驗報告提交要求
1) 實現功能的全部程式
2) 附加輸出結果(截圖貼於word文件)
3) 實驗程式和執行結果必須於2018.5.25前提交 (電子)
#include
#include
#include
#define ok 1
#define error 0
#define overflow 0
#define stack_init_size 100
#define stackincrement 10
typedef char telemtype;
typedef int status;
//定義二叉鍊錶的結點結構
typedef struct bitnode bitnode, *bitree;
typedef bitree selemtype;
typedef structsqstack; //定義乙個順序棧
status initstack(sqstack &s)//初始化乙個順序棧
status stackempty(sqstack s)//判斷乙個棧是否為空
//往棧裡面插入元素e
status push(sqstack &s, bitree p)//若棧滿,追加儲存空間
*s.top++ = p;
return ok;
//刪除棧頂元素,用指標p返回棧裡存放的根指標
status pop(sqstack &s, bitree &p)while(choice!=6);
return 0;
C語言二叉樹
二叉樹使用鏈做結構,其結構體有儲存資料的變數和指向左右孩子的指標 1 typedef char elemtype 23 typedef struct bitreenodebitreenode,bitree 二叉樹的一般遍歷方法 假設先左子樹再右子樹 有3個,根節點作為訪問的先後條件。1 後序遍歷 2...
C語言基礎 16 二叉樹 演算法
如果單向線性鏈式物理結構中每個節點有可能找到多個其他節點則它就變成樹 樹里的所有節點可以分成幾層,不同層之間符合線性規律 任意兩層之間有前後順序 樹的最上面一層只有乙個節點,這個節點叫做根節點 根節點可以代表整棵樹 樹里不同節點之間的直接關係叫做父子關係,其中靠近根節點的叫父節點,另外乙個節點叫子節...
C語言 樹和二叉樹
非線性結構,至多有乙個直接前驅,但可能有多個直接後繼 樹的定義具有遞迴性,樹中還有樹 樹可以為空,即節點個數為0 上圖中樹的節點數 13 樹的度 3 樹的深度 4 每個節點最多有兩棵子樹 不存在度大於2的節點 左子樹和右子樹次序不能顛倒 有序樹 在二叉樹第i層至多由2 i 1 個結點 i 0 深度為...