标签:node 515 最大值 queue 二叉树 max root 树行
给定一棵二叉树的根节点 root
,请找出该二叉树中每一层的最大值。
示例1:
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
示例2:
输入: root = [1,2,3]
输出: [1,3]
二叉树的搜索无非就是DFS或者BFS,通常DFS用的比较多,这道题两个方法都可以,但是题目要求找到每一层的最大值,所以个人觉得层序遍历比较清晰,当然深度优先使用一个变量记录当前层数也可以完成这个任务。
DFS
递归遍历二叉树,每次进入下一层使层数加一,维护当前层数的最大值。
BFS
广度优先搜索,按模板写就行,在一层内维护一个最大值,遍历完一层后加入结果。
贴一个BFS:
class Solution { public List<Integer> largestValues(TreeNode root) { if (root == null) { return new ArrayList(); } Deque<TreeNode> queue = new LinkedList<>(); queue.offer(root); List<Integer> res = new ArrayList<>(); while (!queue.isEmpty()) { int len = queue.size(); int max = Integer.MIN_VALUE; for (int i = 0; i < len; i++) { TreeNode node = queue.poll(); max = Math.max(max, node.val); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } res.add(max); } return res; } }
原文:https://leetcode.cn/problems/find-largest-value-in-each-tree-row/solution/by-nice-hermann9a2-nnrq/
标签:node,515,最大值,queue,二叉树,max,root,树行 来源: https://www.cnblogs.com/liangren-na/p/16437673.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。