/* * @lc app=leetcode id=199 lang=golang * * [199] Binary Tree Right Side View * * https://leetcode.com/problems/binary-tree-right-side-view/description/ * * algorithms * Medium (56.29%) * Likes: 3534 * Dislikes: 187 * Total Accepted: 410.6K * Total Submissions: 729.4K * Testcase Example: '[1,2,3,null,5,null,4]' * * Given the root of 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. * * * Example 1: * * * Input: root = [1,2,3,null,5,null,4] * Output: [1,3,4] * * * Example 2: * * * Input: root = [1,null,3] * Output: [1,3] * * * Example 3: * * * Input: root = [] * Output: [] * * * * Constraints: * * * The number of nodes in the tree is in the range [0, 100]. * -100 <= Node.val <= 100 * * */ package leetgo // @lc code=start /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func rightSideView(root *TreeNode) []int { if root == nil { return []int{} } res := []int{} return helper199(root, res, 0) } func helper199(node *TreeNode, res []int, depth int) []int { if node == nil { return res } if len(res) == depth { res = append(res, node.Val) } res = helper199(node.Right, res, depth+1) res = helper199(node.Left, res, depth+1) return res } // @lc code=end