404.左葉の和(Python)

1225 ワード

タイトル
難易度:★☆☆☆タイプ:二叉樹
与えられた二叉木のすべての左葉の和を計算します.
    3
   / \
  9  20
    /  \
   15   7

この二叉木には、左の葉が2つあり、それぞれ9と15なので、24に戻ります.
に答える
二叉樹の問題はしばしば再帰的な方法を用いて、すべての左葉の結点の和を探して、この問題の難点は左葉の結点の判断にあり、私たちは関数を設計して、1本の二叉樹の上のすべての左葉の結点の和を計算する機能を実現します:
  • は、現在の入力ノードが空であるか否かを判断し、空である場合、これらはゼロを返す.
  • 現在入力されているノードの左サブツリーがリーフノードであるか否かを判断する:(1)もしそうであれば、左サブツリー上の数値と右サブツリー上のすべての左サブツリーノードの和を返す(この関数計算を再帰的に呼び出す);(2)そうでない場合は、左サブツリーと右サブツリーのすべての左葉の結点の和を返します.
  • class Solution:
        def sumOfLeftLeaves(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            if not root:                                                    #       
                return 0                                                    #    
            if root.left and not root.left.left and not root.left.right:    #              
                return root.left.val+self.sumOfLeftLeaves(root.right)       #      +            
            else:                                                           #   
                return self.sumOfLeftLeaves(root.left)+self.sumOfLeftLeaves(root.right)     #                
    

    質問やアドバイスがあれば、コメントエリアへようこそ~