首页 > 其他分享 >力扣 深度优先搜索 199. 二叉树的右视图

力扣 深度优先搜索 199. 二叉树的右视图

时间:2024-02-18 09:03:41浏览次数:35  
标签:right TreeNode val 视图 queue 二叉树 199 size result

/**  * Definition for a binary tree node.  * public class TreeNode {  *     int val;  *     TreeNode left;  *     TreeNode right;  *     TreeNode() {}  *     TreeNode(int val) { this.val = val; }  *     TreeNode(int val, TreeNode left, TreeNode right) {  *         this.val = val;  *         this.left = left;  *         this.right = right;  *     }  * }  */ class Solution {     List<Integer> result = new ArrayList<>();     public List<Integer> rightSideView(TreeNode root) {         dfs(root,0);         return result;     }     public void dfs(TreeNode node,int depth){         // 如果当前深度比size大,加入到result;         if(depth > result.size()){             result.add(node.val);         }         else{             // 如果当前深度<= size,将当前result深度的值设为当前值;             // 这里代码主要和下发的dfs联动,因为是先dfs left,所以再dfs  right时会更新数据             // 最后生成右视图 结果             // 反之,生成左视图结果只需先dfs right,再dfs left             result.set(depth,node.val);         }         dfs(root.left,depth+1);         dfs(root.right,depth+1);     } }       bfs   /**  * Definition for a binary tree node.  * public class TreeNode {  * int val;  * TreeNode left;  * TreeNode right;  * TreeNode() {}  * TreeNode(int val) { this.val = val; }  * TreeNode(int val, TreeNode left, TreeNode right) {  * this.val = val;  * this.left = left;  * this.right = right;  * }  * }  */ class Solution {     public List<Integer> rightSideView(TreeNode root) {         List<Integer> result = new ArrayList<>();         if (root == null)             return result;         Queue<TreeNode> queue = new LinkedList<>();         queue.offer(root);         int size;         while (!queue.isEmpty()) {             size = queue.size();             for (int i = 0; i < size; i++) {                 TreeNode temp = queue.poll();                 if (temp.left != null)                     queue.offer(temp.left);                 if (temp.right != null)                     queue.offer(temp.right);                 if (i == size - 1)                     result.add(temp.val);             }         }         return result;     } }

标签:right,TreeNode,val,视图,queue,二叉树,199,size,result
From: https://www.cnblogs.com/JavaYuYin/p/18018721

相关文章

  • P1011 [NOIP1998 提高组] 车站
    题目描述火车从始发站(称为第11站)开出,在始发站上车的人数为aa,然后到达第22站,在第22站有人上、下车,但上、下车的人数相同,因此在第22站开出时(即在到达第33站之前)车上的人数保持为aa人。从第33站起(包括第33站)上、下车的人数有一定规律:上车的人数都是前两站上车人数......
  • 代码随想录算法训练营第十七天 | 110.平衡二叉树 (优先掌握递归)| 404.左叶子之和 (优先
    257.二叉树的所有路径 已解答简单 相关标签相关企业 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:ro......
  • 代码随想录算法训练营第十六天 | 104.二叉树的最大深度| 559.n叉树的最大深度|222.完
    222.完全二叉树的节点个数 已解答简单 相关标签相关企业 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中......
  • 代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树
    226.翻转二叉树 已解答简单 相关标签相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[......
  • 力扣递归 广度优先搜索之102. 二叉树的层序遍历
    classSolution{   List<List<Integer>>result=newArrayList<>();   publicList<List<Integer>>levelOrder(TreeNoderoot){       if(root==null){           returnresult;       }       traverse(root,0);    ......
  • 力扣递归之 543. 二叉树的直径
    classSolution{//二叉树直径其实就是根到左子树最深+根到右子树最深  intdiameter;    publicintdiameterOfBinaryTree(TreeNoderoot){    calculateDepth(root);    returndiameter;  }    privateintcalculateDe......
  • 力扣递归之101. 对称二叉树
    classSolution{  publicbooleanisSymmetric(TreeNoderoot){    if(root==null){      returntrue;    }    returnisMirror(root.left,root.right);  }    publicbooleanisMirror(TreeNodeleft,Tr......
  • P10149 [Ynoi1999] XM66F题解
    题解首先,问题是静态的区间查询问题,一眼莫队。那么我们就需要考虑所需要维护的内容在区间扩增或者缩减时的变化如何快速维护。我们可以先写出对于区间\([l,r]\)来说,满足\(l\lei<j<k\ler\)的有序三元组\((i,j,k)\)数量的表达式,方便拆式子:\[\sum\limits_{i=l}^{r}......
  • 树状数组-三色二叉树 题解
    题目在这里————————————————————————————————三色二叉树首先题面写的很清楚了是一道树状数组题因为这题的输入方式很特别按二叉树序列所以在输入上要特殊处理如下voidread(intx){//读入+存图以左右子树为形式如l[x]=y即y为x左子树......
  • (18/60)找树左下角的值、路径总和、从中序与后序遍历构造二叉树
    找树左下角的值leetcode:513.找树左下角的值层序迭代法思路层序遍历,每次更新result为每层最左侧元素。复杂度分析时间复杂度:遍历,O(N)。空间复杂度:队列层序遍历,树*似完全二叉树时O(N),树极倾斜时O(logN)。注意点略代码实现/***Definitionforabinarytreenode.......