廣度優先遍歷二叉樹

2021-08-25 15:08:32 字數 3111 閱讀 6236

同學電面被問到乙個問題:如何獲得完全二叉樹的最後乙個節點?二叉樹以鍊錶的形式儲存。

沒想到合適的辦法,用廣度遍歷吧,最後乙個節點就是了,**如下:

#include #include //樹節點的定義

struct tnode;

//佇列節點的定義

struct qnode;

//佇列的定義

struct queue;

//初始化佇列

void initqueue(struct queue *q)

//入佇列

void enqueue(struct queue *q, struct tnode *node)

//出佇列,注意判定快為空時,應有 rear=front

struct tnode* dequeue(struct queue *q)

free(p);

printf("de-node-value:%d\n",t->value);

return t;

}//建立二叉樹

void createlr(struct tnode *node)else

}//主程式

int main(int argc, char **argv)

p=head;

while(p)

printf("\n");

//用乙個輔助的鏈佇列,廣度遍歷樹

p=head;

struct queue *q;

initqueue(q);

printf("%d\n",p->value);

enqueue(q,p);

while(q->front->next!=null)

if(p->right!=null) }

//以下**沒有別的意思,就是測試命令列引數

int i=0;

for(i=0; i輸出如下:

124816321

371531

1en-node-value:1

de-node-value:1

2en-node-value:2

3en-node-value:3

de-node-value:2

4en-node-value:4

5en-node-value:5

de-node-value:3

6en-node-value:6

7en-node-value:7

de-node-value:4

8en-node-value:8

9en-node-value:9

de-node-value:5

10en-node-value:10

11en-node-value:11

de-node-value:6

12en-node-value:12

13en-node-value:13

de-node-value:7

14en-node-value:14

15en-node-value:15

de-node-value:8

16en-node-value:16

17en-node-value:17

de-node-value:9

18en-node-value:18

19en-node-value:19

de-node-value:10

20en-node-value:20

21en-node-value:21

de-node-value:11

22en-node-value:22

23en-node-value:23

de-node-value:12

24en-node-value:24

25en-node-value:25

de-node-value:13

26en-node-value:26

27en-node-value:27

de-node-value:14

28en-node-value:28

29en-node-value:29

de-node-value:15

30en-node-value:30

31en-node-value:31

de-node-value:16

32en-node-value:32

33en-node-value:33

de-node-value:17

34en-node-value:34

35en-node-value:35

de-node-value:18

36en-node-value:36

37en-node-value:37

de-node-value:19

38en-node-value:38

39en-node-value:39

de-node-value:20

de-node-value:21

de-node-value:22

de-node-value:23

de-node-value:24

de-node-value:25

de-node-value:26

de-node-value:27

de-node-value:28

de-node-value:29

de-node-value:30

de-node-value:31

de-node-value:32

de-node-value:33

de-node-value:34

de-node-value:35

de-node-value:36

de-node-value:37

de-node-value:38

de-node-value:39

./test01

在 linux 環境下練習,除錯**還有點不太習慣,vc6上可以的,在 linux 中,卻一定要要加 struct,如: struct qnode *nd ,其實還有點 bug,基本功能湊合用吧。

vm 下 ubuntu 和 windows 共享沒解決,搭了三個環境,一樣的方法,就這台不能共享,逼得只能用 apache 伺服器,以網頁形式把**拷貝出來,汗。。。。

二叉樹 廣度優先遍歷

廣度優先遍歷從最底層 或者最高層 開始,向下 或向上 逐層訪問每個節點,在每一層次上,從左到右 或從右到左 訪問每個節點。這樣就有4種訪問方式。當使用佇列時,這種遍歷方式的實現相當直接。假設從上到下 從左到右進行進行廣度優先遍歷。在訪問了乙個節點後,它的子節點 如果有的話 就放到佇列的末尾,然後訪問...

二叉樹構造 二叉樹的廣度優先遍歷

輸入一棵二叉樹的先序遍歷序列和中序遍歷序列,輸出它的廣度優先遍歷序列。第一行為乙個整數t 0為每個測試用例單獨一行輸出廣度優先遍歷序列。2dbacegf abcdefg bcad cbad dbeacgf bcad include include include using namespace st...

二叉樹的深度優先遍歷和廣度優先遍歷

深度優先搜尋演算法 depth first search 是搜尋演算法的一種。是沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所有邊都己被探尋過,搜尋將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個作為源...