給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例:二叉樹:[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...