您的位置:首页 > 其它

Binary Tree Right Side View ---LeetCode

2016-11-28 16:08 239 查看
https://leetcode.com/problems/binary-tree-right-side-view/

解题思路:

这道题的意思要输出从右边看到的节点元素,即:每一层最右边的那个元素。因此我们可以用队列来实现,遍历每一层时,将最右边的元素入列。

需要注意的是:在将左右子树的节点入列时,一定要先入列右节点!

同理,如果是从左边看,只需要先将左节点入列即可。

/**
* 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) {
List<Integer> result = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();

if (root == null) return result;
queue.offer(root);
while (!queue.isEmpty()) {
int size = queue.size();
for (int i=0; i<size; i++) {
root = queue.poll();
// get the right-most element
if (i == 0)
result.add(root.val);

if (root.right != null)
queue.offer(root.right);
if (root.left != null)
queue.offer(root.left);
}
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: