Last updated on October 5th, 2024 at 08:51 pm
Here, We see Binary Tree Right Side View LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Breadth-First-Search, Depth-First-Search, Tree
Companies
Amazon
Level of Question
Medium
Binary Tree Right Side View LeetCode Solution
Table of Contents
Problem Statement
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: []
1. Binary Tree Right Side View LeetCode Solution C++
class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int>ans; queue<TreeNode*> q; if(root==NULL) return ans; q.push(root); while(1) { int size=q.size(); if(size==0) return ans; vector<int> data; while(size--) { TreeNode* temp=q.front(); q.pop(); data.push_back(temp->val); if(temp->left!=NULL) q.push(temp->left); if(temp->right!=NULL) q.push(temp->right); } ans.push_back(data.back()); } } };
2. Binary Tree Right Side View LeetCode Solution Java
class Solution { int maxlevel = 0; public List<Integer> rightSideView(TreeNode root) { List<Integer> list = new ArrayList<>(); right(root,1,list); return list ; } void right(TreeNode root,int level,List<Integer> list){ if(root==null){ return ; } if(maxlevel<level){ list.add(root.val); maxlevel=level; } right(root.right,level+1,list); right(root.left,level+1,list); } }
3. Binary Tree Right Side View Solution JavaScript
var rightSideView = function(root) { if (!root) return []; let res = []; pre(root, 0); return res; function pre(node, h) { if (!node) return; res[h] = node.val; pre(node.left, h+1); pre(node.right, h+1); } };
4. Binary Tree Right Side View Solution Python
class Solution(object): def rightSideView(self, root): queue = deque() if root is None: return [] if root.left is None and root.right is None: return [root.val] result = [] queue.append(root) while queue: child_queue = deque() prev = -1 while queue: curr = queue.popleft() if curr.left is not None: child_queue.append(curr.left) if curr.right is not None: child_queue.append(curr.right) prev = curr result.append(prev.val) queue = child_queue return result