513. Find Bottom Left Tree Value

2017-11-27  本文已影响0人  xiaoyaook

两个问题,如何找到最后一层?如何找到最左端?
可以想到用BFS,一层一层向下迭代.
保持一个queue数组,循环时每次记录最左端的值,
直到queue中无元素,退出循环.

class Solution(object):
    def findBottomLeftValue(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        queue = [root]
        ans = 0
        while any(queue):
            // ans 一直为当前层最左端的元素的值
            ans = queue[0].val
            queue = [leaf for node in queue for leaf in (node.left,node.right) if leaf]
        return ans

这里可以用高阶函数filter简化

def findLeftMostNode(self, root):
    queue = [root]
    for node in queue:
        queue += filter(None, (node.right, node.left))
    return node.val

如果filter参数值为None,就使用identity()函数,list参数中所有为假的元素都将被删除

上一篇 下一篇

猜你喜欢

热点阅读