【二叉树】leetcode513-找树左下角的值
基础:nonlocal与global关键字
-
参见:https://www.cnblogs.com/brad1994/p/6533267.html nonlocal:这是一个函数里面再嵌套了一个函数。当使用 nonlocal 时,就声明了该变量不只在嵌套函数inner()里面才有效, 而是在整个大函数里面都有效。 global:对整个环境下的变量起作用,而不是对函数类的变量起作用。
题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。 解答: 方法一:递归
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def findBottomLeftValue(self, root: TreeNode) -> int: maxlen = -float("INF") #记录最大深度 leftvalue = 0 #记录最大深度最左侧节点的值 def traversal(root,cur_len): nonlocal maxlen,leftvalue if (not root.left) and (not root.right): #根 #找到最大深度的第一个节点(最左节点)值 if cur_len>maxlen: maxlen=cur_len leftvalue=root.val return if root.left: #左 traversal(root.left,cur_len+1) if root.right: #右 traversal(root.right,cur_len+1) return traversal(root,0) return leftvalue
方法二:迭代,层序遍历
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def findBottomLeftValue(self, root: TreeNode) -> int: que=[root] while que: t=len(que) res=que[0] for i in range(t): cur=que.pop(0) if cur.left: que.append(cur.left) if cur.right: que.append(cur.right) return res.val
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
leetcode第268场周赛记录