二叉樹的層序遍歷

2021-10-05 18:29:05 字數 1619 閱讀 3639

給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。

示例:二叉樹:[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回其層次遍歷結果:

[

[3],

[9,20],

[15,7]

]

結點定義

struct treenode 

};

主要演算法

template

<

typename t>

class

solution

queue

> q;

q.push

(root)

;while

(!q.

empty()

)if(t->right)

} res.

push_back

(level)

;//將當層元素的vector加入res中

}return res;

}//按層次順序建立二叉樹結點

treenode*

createbitree

(const t a,

int len,

int index)

return p;};

//按層次遍歷顯示二叉樹結點

void

show

(const vector

int>>

& vlist,

int h)

str.

pop_back()

; str +

="],\n";}

str.

pop_back()

; str.

pop_back()

; str +

="\n]"

; cout << str;}}

;

入口函式

int

main()

; solution<

int> s;

treenode* root = s.

createbitree

(p,sizeof

(p),0)

; vector

int>> vlist = s.

levelorder

(root)

; s.

show

(vlist,

log2

(sizeof

(p)/

sizeof

(int))

);system

("pause");

return0;

}

顯示結果

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

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 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...