0


199. 二叉树的右视图

描述 :

给定一个二叉树的 根节点

  1. root

,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

题目 :

LeetCode 二叉树的右视图 :

  1. 二叉树的右视图

分析 :

这个题目出现频率还挺高的,如果没有提前思考过,面试现场可能会想不到怎么做。其实也很简单那,利用 BFS 进行层次遍历,记录下每层的最后一个元素

解析 :

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode() {}
  8. * TreeNode(int val) { this.val = val; }
  9. * TreeNode(int val, TreeNode left, TreeNode right) {
  10. * this.val = val;
  11. * this.left = left;
  12. * this.right = right;
  13. * }
  14. * }
  15. */
  16. class Solution {
  17. public List<Integer> rightSideView(TreeNode root) {
  18. List<Integer> list = new ArrayList<>();
  19. if(root == null){
  20. return list;
  21. }
  22. Queue<TreeNode> queue = new LinkedList<>();
  23. queue.add(root);
  24. while(!queue.isEmpty()){
  25. int size = queue.size();
  26. for(int i = 0;i < size ; i++){
  27. TreeNode temp = queue.remove();
  28. if(temp.left != null){
  29. queue.add(temp.left);
  30. }
  31. if(temp.right != null){
  32. queue.add(temp.right);
  33. }
  34. if( i == size -1){
  35. list.add(temp.val);
  36. }
  37. }
  38. }
  39. return list;
  40. }
  41. }
标签: 算法

本文转载自: https://blog.csdn.net/sytdsqzr/article/details/134267288
版权归原作者 踏遍三十六岸 所有, 如有侵权,请联系我们删除。

“199. 二叉树的右视图”的评论:

还没有评论