题目

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;
};