/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int max;
public void fun(List<Integer> queue,List<Integer> level,int n,TreeNode root)
{
if(n>max)max=n;
queue.add(root.val);
level.add(n);
if(root.left!=null)
{
fun(queue,level,n+1,root.left);
}
if(root.right!=null)
{
fun(queue,level,n+1,root.right);
}
}
public List<Integer> rightSideView(TreeNode root)
{
max=0;
List<Integer> ans=new ArrayList<Integer>();
List<Integer> queue=new LinkedList<Integer>();
List<Integer> level=new ArrayList<Integer>();
//List<List<Integer>> temp=new ArrayList<List<Integer>>();
if(root==null)return ans;
fun(queue,level,1,root);
for(int i=1;i<=max;i++)
{
for(int j=level.size()-1;j>=0;j--)
{
if(level.get(j)==i)
{
ans.add(queue.get(j));
break;
}
}
}
return ans;
}
}
199. Binary Tree Right Side View
DescriptionHintsSubmissionsDiscussSolution
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.
Example:
Input: [1,2,3,null,5,null,4] Output: [1, 3, 4] Explanation: 1 <--- / \ 2 3 <--- \ \ 5 4 <---