關於二叉樹的列印問題

2021-10-08 19:41:31 字數 1831 閱讀 6303

寫二叉樹的的深度的時候,順便寫了二叉樹的列印,一般列印都是波蘭式或者逆波蘭式,看起來太難受,就寫了個順序列印,正好畫個二叉樹,用佇列實現,**如下:

#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更...