513. 找树左下角的值(中)

题目

  • 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

    假设二叉树中至少有一个节点。

题解:BFS

  • BFS,队列的最后一层的第一个结点
class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        q=[]# 存储待处理的节点
        q.append(root)# 将根节点添加到队列中
        while q:
            size=len(q)
            res=[]# 存储当前层的节点值
            for _ in range (size):
                cur=q.pop(0) # 从队列中取出当前节点
                if cur.left:
                    q.append(cur.left)# 将左子节点添加到队列中
                if cur.right:
                    q.append(cur.right) # 将右子节点添加到队列中
                res.append(cur.val)# 将当前节点的值添加到当前层的节点值列表中

        return res[0]# 返回最后一层的第一个节点的值

题解:BFS优化

  • 从右往左队列的最后一个元素
class Solution:
    def findBottomLeftValue(self, root: TreeNode) -> int:
        q = [root]
        while q:
            cur = q.pop(0)
            if cur.right:  # 先右后左
                q.append(cur.right)
            if cur.left:
                q.append(cur.left)
        return cur.val
posted @ 2023-12-23 13:31  Frommoon  阅读(2)  评论(0编辑  收藏  举报