using System.Collections.Generic;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
public static void Main(string[] args)
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.right = new TreeNode(5);
root.right.right = new TreeNode(4);
int[] result = RightSideView(root);
if (result != null && result.Length > 0)
for (int i = 0; i < result.Length; i++)
System.Console.Out.WriteLine(result[i]);
public static int[] RightSideView(TreeNode root)
List<int> resultList = new List<int>();
Queue<TreeNode> queue = new Queue<TreeNode>();
TreeNode currentNode = root;
queue.Enqueue(currentNode);
for(int i=1; i<= n; i++){
currentNode = queue.Dequeue();
resultList.Add(currentNode.val);
if(currentNode.left != null)
queue.Enqueue(currentNode.left);
if(currentNode.right != null)
queue.Enqueue(currentNode.right);
return resultList.ToArray();