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

Binary Tree Right Side View

时间:2015-04-27 00:00:59      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

Binary Tree Right Side View

问题:

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.

For example:
Given the following binary tree,

思路:

  bfs+dfs

我的代码:

技术分享
public class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> rst = new ArrayList<Integer>();
        if(root == null) return rst;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        while(!queue.isEmpty())
        {
            int size = queue.size();
            for(int i = 0; i < size; i++)
            {
                TreeNode node = queue.poll();
                if(i == size-1)
                {
                    rst.add(node.val);
                }
                if(node.left != null)
                    queue.offer(node.left);
                if(node.right != null)
                    queue.offer(node.right);
            }
        }
        return rst;
    }
}
View Code

他人代码:

技术分享
public class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> result = new ArrayList<Integer>();
        rightView(root, result, 0);
        return result;
    }

    public void rightView(TreeNode curr, List<Integer> result, int currDepth){
        if(curr == null){
            return;
        }
        if(currDepth == result.size()){
            result.add(curr.val);
        }

        rightView(curr.right, result, currDepth + 1);
        rightView(curr.left, result, currDepth + 1);

    }
}
View Code

学习之处:

  • 没有想到DFS的解法啊,看到别人怎么写的,思路真实精妙啊,可以通过层数控制只输出一侧。

Binary Tree Right Side View

标签:

原文地址:http://www.cnblogs.com/sunshisonghit/p/4458594.html

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