[cpp]
/*二叉樹的各種操作複習*/
#include
#define back_oder -1
#define in_oder 0
#define pre_oder 1
#define level_oder 2//層次化遍歷
typedef struct _node node,*tree;
/* 生成二叉樹的普通方法
* 按先序次序輸入二叉樹中結點的值
* 構造二叉鍊錶表示的二叉樹t。輸入空格表示空子樹。 */
node * createtree()
return t;
} /* 由先根序列和中根序列生成二叉樹
* 遞迴法。pre 是先跟序列,in是中根序列
* pre_s是先根序列的起始,pre_e是先跟序列的結束
* in_s是中根序列的起始,in_e是中根序列的結束
*/ node *convert(char pre, int pre_s, int pre_e,
char in , int in_s , int in_e )
/*求二叉樹的度*/
int getdegree(const tree head)
return degree;
} /*求二叉樹的高度*/
int gethight(const tree head)
/* 輸出二叉樹中某個指定元素的祖父節點(包括自己)
* 遞迴思想:如果此節點在其子樹中,那麼它是祖父節點
* 返回值 :1表示子樹中有 ,0表示無*/
int getgrandpa(const tree head, const char e)
else return 0;
} /*遍歷二叉樹,引數oder控制遍歷方式*/
void tranverse(node *head,int oder)
if(pre_oder == oder) printf("%c\t",head->data);
tranverse(head->lchild,oder);
if(in_oder == oder) printf("%c\t",head->data);
tranverse(head->rchild,oder);
if(back_oder == oder) printf("%c\t",head->data);
return;
} /* 層次化遍歷,採用遞迴思想而不用佇列。
* 遞迴思想:把當前層遍歷的同時把下一層儲存好
* nodes儲存的當前層的節點,count表示當前層的元素個數*/
void levtranverse(const node* nodes, int count)
; for(i = 0,j=0; i
levtranverse(nextnodes,j);
return; }
int main(int argc, char *ar**)
二叉樹的各種遍歷操作
作 者 王鵬 完成日期 2016年 3 月 13 日 問題描述 二叉樹的各種遍歷操作 輸入描述 以 代替樹的兒子為空,如輸入 abd fe cg h i 程式輸出 如 所示 include includetypedef struct treenode bitree typedef struct tr...
複習 二叉樹 樹
樹是一種很常用的資料結構,日後的學習中會經常碰到運用樹的知識。構造二叉樹 include include include using namespace std 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空...
複習二叉樹之線索二叉樹
include 線索二叉樹是在遍歷的過程中線索化 typedef struct bithrnodebithrnode,bithrtree bithrtree pre 全域性變數 建立二叉鍊錶 先序遍歷建立 關鍵在於 表明空樹 void createbitree bithrtree a else 為什...