码迷,mamicode.com
首页 > 其他好文 > 详细

199. Binary Tree Right Side View

时间:2016-06-08 10:29:52      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

    /*
     * 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!