Tuesday, August 23, 2016

Leetcode 199. Binary Tree Right Side View

 /**  
  * Definition for a binary tree node.  
  * public class TreeNode {  
  *   public int val;  
  *   public TreeNode left;  
  *   public TreeNode right;  
  *   public TreeNode(int x) { val = x; }  
  * }  
  */  
 public class Solution {  
   public IList<int> RightSideView(TreeNode root) {  
     List<int> ret = new List<int>();  
     if (root == null)  
     {  
       return ret;  
     }  
     List<TreeNode> list = new List<TreeNode>();  
     list.Add(root);  
     while (list.Count > 0)  
     {  
       // Get children of all items from the list, and keep record of the last one  
       List<TreeNode> newlist = new List<TreeNode>();  
       foreach(TreeNode item in list)  
       {  
         if (item.left != null)  
         {  
           newlist.Add(item.left);  
         }  
         if (item.right != null)  
         {  
           newlist.Add(item.right);  
         }  
       }  
       TreeNode last = list[list.Count - 1];  
       ret.Add(last.val);  
       list = newlist;  
     }  
     return ret;  
   }  
 }  

No comments:

Post a Comment