二叉樹的層序遍歷

2021-08-14 12:48:42 字數 1095 閱讀 1549

這裡主要就二叉樹的層序遍歷進行一下分析,二叉樹的層序遍歷即遍歷樹的各個節點方向為從上到下、從左到右進行遍歷。在這裡

主要過程為將佇列的  頭結點入隊 然後將頭結點出隊 然後將頭結點的左兒子、頭結點的右兒子入隊,迴圈往復直到隊列為空。

#define _crt_secure_no_warnings

#include

#include

typedef char elementtype;

struct treenode

;typedef struct treenode treenode;

treenode *inittreenode(elementtype data,treenode *leftchild,treenode *rightchild)

以上為treenode.h中的內容,主要功能是建立二叉樹的結點,

#include"treenode.h"

enum boolean ;

typedef enum boolean bool;

typedef treenode * node;

struct queue

;typedef struct queue queue;

queue *initqueue(int sz)

bool isfull(queue *queue)

bool isempty(queue *queue)

bool enqueue(queue *queue, treenode *x)

else

}treenode *outqueue(queue *queue)

else}

上述為queue.h中的內容,主要為佇列的基本操作,初始化佇列,判斷佇列是否為空,判斷佇列是否為滿,入隊出隊操作。

關鍵是建立乙個能存放hnode*的陣列。

include"queue.h"

#define max_size 20

void layervisit(treenode *t)

else

if (t->rightchild)}}

}void main()

主函式,將二叉樹各個節點輸入,進行層序遍歷。。。。。。。。。。。。。

二叉樹層序遍歷 求二叉樹的層序遍歷

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...

層序遍歷二叉樹

要求 設計乙個演算法層序遍歷二叉樹 同一層從左到右訪問 我寫了乙個演算法 用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。status hierarchybitree bitree t,status visit telemtype e destroyqueue q 釋放佇列空間 return...

二叉樹層序遍歷

主要流程 確定root非空 根指標進佇列 佇列非空就一直迴圈 依次掃瞄目前佇列中所有元素 新增的不算 從佇列取出第一元素 將值放入結果vector中 判斷左右子節點非空,並依次入隊 將本次結果放入二維陣列中 如果需要按層逆序輸出的話,在這裡將二維結果倒排一下 返回二維結果 vector levelo...