[LeetCode]Binary Tree Right Side View

来源:互联网 发布:域名备案ps 编辑:程序博客网 时间:2024/05/16 11:25

Question:

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,

   1            <--- /   \2     3         <--- \     \  5     4       <---

You should return [1, 3, 4].

分析:

这道题是找到每一层最右边的那个节点, 所以可以想到用bsf。 bsf 使用的是queue,可以从右扫到左,第一个数字放进result里

易错点:

que的size要每次进入新的一层的时候申明

solution:

{code}

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        ArrayList<Integer> res = new ArrayList<Integer>();
        LinkedList<TreeNode> que = new LinkedList<TreeNode>();
        if(root == null)
            return res;
        que.add(root);
        while(!que.isEmpty()) {
           int size = que.size();
            for(int i=0;i<size;i++) {
                TreeNode top = que.remove();
                if(i==0) {
                    res.add(top.val);
                }
                if(top.right!=null) {
                    que.add(top.right);
                }
                if(top.left!=null) {
                    que.add(top.left);
                }
            }
        }
        return res;
    }
}

{code}


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<Integer> rightSideView(TreeNode root) {        ArrayList<Integer> res = new ArrayList<Integer>();        LinkedList<TreeNode> que = new LinkedList<TreeNode>();        if(root == null)            return res;        que.add(root);        while(!que.isEmpty()) {           int size = que.size();            for(int i=0;i<size;i++) {                TreeNode top = que.remove();                if(i==0) {                    res.add(top.val);                }                if(top.right!=null) {                    que.add(top.right);                }                if(top.left!=null) {                    que.add(top.left);                }            }        }        return res;    }}
0 0
原创粉丝点击