【LeetCode刷題記錄】199. 二叉樹的右檢視
阿新 • • 發佈:2021-02-07
技術標籤:LeetCode佇列二叉樹leetcode演算法資料結構
//從右向左遍歷,只去每層第一次遍歷的那個數
var rightSideView = function(root) {
let dfs=(root, step, res)=>{
if(!root) return [];
if(res.length === step){
res.push(root.val)}
dfs(root.right, step + 1, res);
dfs(root.left, step + 1, res);
return res;
};
return dfs(root, 0, []);
};
BFS
var rightSideView = function(root) {
if(!root) return[];
let queue=[root];//先把根節點加入到佇列中
let arr=[];
while(queue.length>0){//當root還沒有遍歷完(有多少層迴圈多少次)
len=queue.length;//len代表每一層的節點個數
while(len>0){//一層有多少個節點迴圈多少次
let n=queue.shift();//依次彈出當前層的節點
if(len===1){arr.push(n.val);}//當 當前節點是該層的最後一個節點時,把當前節點加入陣列中
if(n.left) queue.push(n.left);//依次在佇列中加入下一層的節點
if(n.right) queue.push(n.right);
len--;//彈出一個,則當前層的節點數減一
}
}
return arr;
};