199. Binary Tree Right Side View
Description 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:
1 2 Input: root = [1,2,3,null,5,null,4] Output: [1,3,4]
Example 2:
1 2 Input: root = [1,null,3] Output: [1,3]
Example 3:
1 2 Input: root = [] Output: []
Constraints:
The number of nodes in the tree is in the range [0, 100]
.
-100 <= Node.val <= 100
Hints/Notes
Solution Language: C++
Recursive solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 class Solution {public : vector<int > res; vector<int > rightSideView (TreeNode* root) { dfs (root, 0 ); return res; } void dfs (TreeNode* root, int depth) { if (!root) { return ; } if (res.size () == depth) { res.push_back (root->val); } if (root->right) { dfs (root->right, depth + 1 ); } if (root->left) { dfs (root->left, depth + 1 ); } } };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 class Solution {public : vector<int > rightSideView (TreeNode* root) { if (!root) { return {}; } queue<TreeNode*> q; q.push (root); vector<int > res; while (!q.empty ()) { int size = q.size (); for (int i = 0 ; i < size; i++) { TreeNode* node = q.front (); q.pop (); if (i == 0 ) { res.push_back (node->val); } if (node->right) { q.push (node->right); } if (node->left) { q.push (node->left); } } } return res; } };