【LeetCode】在每个树行中找最大值 Java 题解
题目描述
给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。
复制代码
思路分析
今天的算法题目是二叉树题目。题目要求很明确,需要找出二叉树每一层的最大值。二叉树的题目,常见的解法的深度优先遍历和广度优先遍历。这个题目使用广度优先思路是,按照层遍历,我们才使用队列数据结构,首先将二叉树放入队列中,队列具有先进先出(first in first out)的性质。在队列中,我们如何记录每一层的数据呢?这里需要在每次出队列之前,记录当前队列的长度,然后在循环中出队,保证是在每一层。接下来,我们使用临时变量,动态更新当前层的最大值。具体实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/f742351e4726c4b88d3dd5603】。文章转载请联系作者。
评论