Skip to content

Prepare For Coder Interview – Denny

  • Basic
  • Medium
  • Hard
  • Architect
  • Life

LeetCode: Binary Tree Right Side View

Posted on January 13, 2018July 26, 2020 by braindenny

Binary Tree Right Side View



Similar Problems:

  • CheatSheet: Leetcode For Code Interview
  • CheatSheet: Common Code Problems & Follow-ups
  • Tag: #binarytree, #bfs, #dfs

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].

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


// https://code.dennyzhang.com/binary-tree-right-side-view
// Basic Ideas: BFS
// Complexity: Time O(n), Space O(h)
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func rightSideView(root *TreeNode) []int {
    res := []int{}
    if root == nil { return res }
    queue := []*TreeNode{root}
    for len(queue) > 0 {
        l := []*TreeNode{}
        for i, node := range queue {
            if i == len(queue)-1 {
                res = append(res, node.Val)
            }
            if node.Left != nil {
                l = append(l, node.Left)
            }
            if node.Right != nil {
                l = append(l, node.Right)
            }
        }
        queue = l
    }
    return res
}
## https://code.dennyzhang.com/binary-tree-right-side-view
## Basic Ideas:
##        Level order traversal. And get the right most for each level
##                1
##              /   \
##             2     3
##            /
##           4
##        return: 1, 3, 4
## Complexity:
##        Time O(k), Space O(k). k is the height of the tree
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def rightSideView(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if root is None:
            return []
        res = []
        queue = []
        queue.append(root)
        while len(queue) != 0:
            length = len(queue)
            for i in xrange(length):
                element = queue[0]
                del queue[0]
                if element.left:
                    queue.append(element.left)
                if element.right:
                    queue.append(element.right)
                # right most element
                if i == length - 1:
                    res.append(element.val)
        return res
linkedin
github
slack

Post Views: 5
Posted in MediumTagged #bfs, #binarytree, #dfs

Post navigation

LeetCode: Search in Rotated Sorted Array
LeetCode: Binary Search Tree Iterator

Leave a Reply Cancel reply

Your email address will not be published.

Tags

#array #backtracking #bfs #binarytree #bitmanipulation #blog #classic #codetemplate #combination #dfs #dynamicprogramming #game #graph #greedy #heap #inspiring #interval #linkedlist #manydetails #math #palindrome #recursive #slidingwindow #stack #string #subarray #trie #twopointer #twosum binarysearch editdistance hashmap intervaldp knapsack monotone oodesign presum rectangle redo review rotatelist series sql treetraversal unionfind

Recent Posts

  • a
  • a
  • a
  • a
  • a

Recent Comments

    Archives

    Categories

    • Amusing
    • Basic
    • Easy
    • Hard
    • Life
    • Medium
    • Resource
    • Review
    • Series
    • Uncategorized
    Proudly powered by WordPress | Theme: petals by Aurorum.