博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】Find Largest Value in Each Tree Row
阅读量:6949 次
发布时间:2019-06-27

本文共 1357 字,大约阅读时间需要 4 分钟。

You need to find the largest value in each row of a binary tree.
Example:Input:           1         / \        3   2       / \   \        5   3   9 Output: [1, 3, 9]

题目要求计算二叉树每一层的最大值,并且将最大值组成一个列表输出。从题目要求很容易可以看出,这是一个二叉树的层序遍历,在遍历的过程中对比求出每一层的最大值。层序遍历的思路就是从根节点开始,依次把每个节点的左右节点放入一个队列中,接着依次遍历队列中的所有节点。

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def largestValues(self, root):        """        :type root: TreeNode        :rtype: List[int]        """        res = []        if root == None:            return res        queue = []        root.index = 0  #修改TreeNode定义,加入index成员,表示该节点所在的层数        res.append(root.val)        p = root        while p!= None:            #print p.val            if p.left != None:                p.left.index = p.index + 1                queue.append(p.left)            if p.right != None:                p.right.index = p.index + 1                queue.append(p.right)            if len(res) <= p.index:                res.append(p.val)            else:                res[p.index] = max(res[p.index],p.val)   #比较每层的最大值            if len(queue) == 0:                break            p = queue[0]            del queue[0]        return res

 

转载于:https://www.cnblogs.com/seyjs/p/6419102.html

你可能感兴趣的文章
C#--DataGridView添加DateTimePicker时间控件
查看>>
一个按照行来截取显示文章摘要的函数
查看>>
编译器GCC的Windows版本 : MinGW-w64安装教程
查看>>
JSTL详解1
查看>>
Java高质量20问
查看>>
自动化环境配置
查看>>
Invalid maximum heap size: -Xmx
查看>>
java email 正则 验证
查看>>
Java HttpClient
查看>>
微信公众号教程(8)用微信开发模式做欢迎词
查看>>
Thinkpad X200 开启 intel virtualization technology (VT-x)
查看>>
添加地图图例 Arcengine+C#
查看>>
2016下半年计划
查看>>
python 学习
查看>>
全局变量反汇编与重定位
查看>>
2017-2018-1 20155229 《信息安全系统设计基础》第八周学习总结
查看>>
oracle查看所有表及字段
查看>>
Goland的下载与安装
查看>>
PhpMyAdmin的配置
查看>>
oracle 查询月份
查看>>