标签:
/* * 199. Binary Tree Right Side View * 11.21 By Mingyang * 在recursive的算法,就是贴着树的右边界往下面走,如果不行往左边偏一个,然后继续往右边偏,利用末尾的个数与层数相等的技巧 * 其实是一种根右左的算法,很巧妙 */ public List<Integer> rightSideView(TreeNode root) { List<Integer> result = new ArrayList<Integer>(); rightSideView(root, result, 0); return result; } public void rightSideView(TreeNode curr, List<Integer> result, int currDepth){ if(curr == null){ return; } //这里就是最精妙的地方,利用result的数量跟层数相等的方法,比如root的右子树走完了以后 //走左边的时候,刚开始没有到达这个条件,就自然继续往下走 if(currDepth == result.size()){ result.add(curr.val); } rightSideView(curr.right, result, currDepth + 1); rightSideView(curr.left, result, currDepth + 1); }
199. Binary Tree Right Side View
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5569188.html