513. 找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

输入:

    2
   / \
  1   3

输出:
1

示例 2:

输入:

        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

输出:
7

注意: 您可以假设树(即给定的根节点)不为 NULL。

思路:
利用辅助队列,

  • 每次pop一个节点时,检查左右子树是否为空,如果不为空,按照push右子树,再push左子树的顺序将子节点压入栈中
  • 当队列最后为空时,最后一次pop出的节点即为树的左下角节点
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def findBottomLeftValue(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        queue = []
        
        queue.append(root)
        
        while queue:
            curr_node = queue.pop(0)
            
            if curr_node.right:
                queue.append(curr_node.right)
            
            if curr_node.left:
                queue.append(curr_node.left)
                
        return curr_node.val
posted @ 2018-09-19 12:40  yuyin  阅读(78)  评论(0编辑  收藏  举报