leecode 199. 二叉树的右视图

文章目录

  • 题目
  • 涉及知识点
    • BFS,广度遍历
    • DFS,深度遍历
  • 代码
  • 参考博客

题目

leecode 199. 二叉树的右视图_第1张图片

涉及知识点

二叉树的BFS,DFS 深度遍历跟广度遍历

BFS,广度遍历

Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
     
            TreeNode node = queue.poll();
            if (node.left != null) {
     
                queue.add(node.left);
            }
            if (node.right != null) {
     
                queue.add(node.right);
            }
        }

DFS,深度遍历

Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
     
            TreeNode node = queue.poll();
            if (node.left != null) {
     
                rightSideView(node.left);
            }
            if (node.right != null) {
     
                rightSideView(node.right);
            }
        }

代码

public List<Integer> rightSideView(TreeNode root) {
     
        if (root == null) {
     
            return new ArrayList<>();
        }
        Queue<TreeNode> queue = new LinkedList<>();
        List<Integer> resultList = new ArrayList<>();
        queue.add(root);
        while(!queue.isEmpty()){
     
            int size = queue.size();
            for(int i =0;i<size;i++){
     
                TreeNode node = queue.poll();
                if(node.left!=null){
     
                    queue.add(node.left);
                }
                if(node.right!=null){
     
                    queue.add(node.right);
                }
                if (i == size - 1) {
     
                	//记录一行中的最后一个值
                    resultList.add(node.val);
                }
            }

        }

        return resultList;
    }

参考博客

  • java代码使用BFS和DFS遍历二叉树

你可能感兴趣的:(算法,算法,leetcode)