寫二叉樹的的深度的時候,順便寫了二叉樹的列印,一般列印都是波蘭式或者逆波蘭式,看起來太難受,就寫了個順序列印,正好畫個二叉樹,用佇列實現,**如下:
#include
#include
#include
typedef
char telemtype;
typedef
struct bitnode bitnode,
*bitree;
//樹的節點
typedef bitnode* stelemtype;
typedef
struct qnodet qnodet,
* queuetptr;
//佇列的節點
typedef
struct
linkqueuet;
//佇列
void
queuetinit
(linkqueuet& q)
;//佇列初始化
void
queuetinsert
(linkqueuet& q, stelemtype e)
;//佇列插入
stelemtype queuetdelete
(linkqueuet& q)
;//佇列刪除並返回
intqueuetlength
(linkqueuet q)
;//佇列長度
void
createbitree
(bitree& t)
;//先序建立二叉樹
void
treedispalyone
(telemtype e,
int n)
;//單個節點列印
void
treedispaly
(bitree t)
;//列印
inttreedepth
(bitree t)
;//遞迴求二叉樹的深度
void
createbitree
(bitree& t)
else
}int
treedepth
(bitree t)
void
treedispalyone
(telemtype e,
int n)
printf
("%c"
, e);}
void
queuetinit
(linkqueuet& q)
void
queuetinsert
(linkqueuet& q, stelemtype e)
stelemtype queuetdelete
(linkqueuet& q)
queuetptr s;
stelemtype data;
data = q.front-
>data;
s = q.front;
q.front = q.front-
>next;
free
(s);
return data;
}int
queuetlength
(linkqueuet q)
return count;
}void
treedispaly
(bitree t)
else
}printf
("\n");
count++
;//換層}}
intmain()
二叉樹問題 二叉樹層級列印
給定二叉樹的頭結點,按層級列印二叉樹節點值。從上到下按層遍歷,應該是先遍歷到的節點先輸出。因此用佇列作為輔助結構來解此題。層級遍歷中關鍵點要知道什麼時候換層。用兩個變數last 和nlast,分別指向當前層的最右邊和下一層的最右邊節點。當當前層的最右邊節點從佇列中輸出時,表示這一層遍歷完畢了,此時使...
二叉樹問題 列印二叉樹的邊界節點
問題 給定一棵二叉樹的頭節點,按照如下兩種標準分別實現二叉樹邊界節點的逆時針列印。標準一 1.頭節點為邊界節點 2.葉節點為邊界節點 3.如果節點在其所在層中的最左邊或最右邊,那麼也是邊界節點標準二 1.頭節點為邊界節點 2.葉節點為邊界節點 3.樹左邊界延伸下去的路徑為邊界節點 4.樹右邊界延伸下...
二叉樹列印
舉例 1.初始化時,last 1,把1放入佇列 2.將1出隊,把1的子孩子2,3放入佇列,更新nlast 3 3.nlast更新完之後,列印上一次出隊的1,並和last比較,如果相同就列印換行,並更新last nlast 3 4.將2出隊,把2的子孩子4放入佇列,更新nlast 4 5,nlast更...