1. 程式人生 > 其它 >【LeetCode刷題記錄】199. 二叉樹的右檢視

【LeetCode刷題記錄】199. 二叉樹的右檢視

技術標籤: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; };