右视图思路:
- 层次遍历二叉树;
- 将每一层的最后一个节点值保存到结果数组;
左视图思路:
- 层次遍历二叉树;
- 将每一层的第一个节点值保存到结果数组;
(1)右视图代码实现
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var rightSideView = function(root) {
//用队列,获取队列每一层最后一个节点
if(!root) return [];
let res = []
let que = []
que.push(root)
while(que.length>0){
let len = que.length;
for(let i=0;i<len;i++){
let q = que.shift();
if(q.left){que.push(q.left)}
if(q.right){que.push(q.right)}
if(i==len-1){
res.push(q.val)
}
}
}
return res;
};
(2)左视图代码实现
var rightSideView = function(root) {
//用队列,获取队列每一层最后一个节点
if(!root) return [];
let res = []
let que = []
que.push(root)
while(que.length>0){
let len = que.length;
for(let i=0;i<len;i++){
let q = que.shift();
if(q.left){que.push(q.left)}
if(q.right){que.push(q.right)}
if(i==0){ //只需将此处改为:判断是否为当前层的第一个节点
res.push(q.val)
}
}
}
return res;
};