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].
Thinking of solving problems
Layer through the calendar to find the node at the right end of each level.
Implementation Code 1
/** * Definition for binary tree * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * TreeNode (int x): Val (x), left (null), right (NULL) {} *}; */ //Runtime:7msclassSolution { Public: vector<int>Rightsideview (TreeNode *root) { vector<int>Nums queue<TreeNode*>Nodesif(Root = NULL) {Nodes.push (root); } TreeNode *cur; while(!nodes.empty ()) {intSize = Nodes.size (); for(inti =0; i < size; i++) {cur = Nodes.front (); Nodes.pop ();if(Cur->left! = NULL) {Nodes.push (cur->left); }if(Cur->right! = NULL) {Nodes.push (cur->right); }} nums.push_back (Cur->val); }returnNums }};
Implementation Code 2
# Definition for a binary tree node# class TreeNode:# def __init__ (self, x):# self.val = x# self.left = None# self.right = None# runtime:74ms class solution: # @param root, a tree node # @return A list of integers def Rightsideview(self, root):Nums = []ifRoot = =None:returnNums nodes = [Root] whileNodes:size = Len (nodes) forIinchRange (size): cur = nodes.pop (0)ifCur.left! =None: Nodes.append (Cur.left)ifCur.right! =None: Nodes.append (Cur.right) nums.append (cur.val)returnNums
[Leetcode] Binary Tree Right Side View