var root = { val: 1, left: { val: 2, left: null, right: { val: 5, left: null, right: null } }, right: { val: 3, left: null, right: { val: 4, left: null, right: null } } }; /* 1 / \ 2 3 \ \ 5 4 */ var node = function(node, depth) { this.node = node; this.depth = depth; }; var rightSideView = function(root) { if (root === null) return []; var q = []; var ret = []; var level = 0; var prev; q.push(new node(root, 0)); while (q.length) { var curr = q.shift(); if (curr.depth > level) { ret.push(prev.node.val); level = curr.depth; } prev = curr; if (curr.node.left) { q.push(new node(curr.node.left, curr.depth + 1)); } if (curr.node.right) { q.push(new node(curr.node.right, curr.depth + 1)); } } ret.push(prev.node.val); return ret; }; console.log(rightSideView(root)); // Output: [1, 3, 4]
Categories