题目
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
For example:
Given the following binary tree,
1 <---
/ \
2 3 <---
\ \
5 4 <---
You should return [1, 3, 4].
大致意思
给你一个二叉树,从右边的角度看过来,你能看到哪些数据。
解决方案
- 进行遍历,我们从右子数开始遍历,因为我们是从右边的角度看过来的情况。
- 每次遍历,
level + 1
- 如果当前的数组的长度小于level的话,说明到了新的一层,我们可以把数据push进行
if (array.length < level) {
array.push([root.val]);
}
- 持续遍历
search(root.right, level + 1)
search(root.left, level + 1);
源代码
var rightSideView = function(root) {
if (!root) return [];
var array = [];
var rightArray = [];
search(root, 1);
function search(root, level) {
if (root) {
if (array.length < level) {
array.push(root.val);
}
search(root.right, level + 1)
search(root.left, level + 1);
} else {
return;
}
}
return array;
};