Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのルートからリーフへのパスのノードが不十分です


二分木があるとします。このノードと交差するそのようなすべてのルートからリーフへのパスの合計が厳密に制限未満である場合、そのノードは不十分であると呼ばれます。不十分なノードをすべて同時に削除し、結果の二分木のルートを返す必要があります。したがって、ツリーがのようで、制限が1 −

の場合、

Pythonのルートからリーフへのパスのノードが不十分です

その場合、出力ツリーは-

になります。

Pythonのルートからリーフへのパスのノードが不十分です

これを解決するには、次の手順に従います-

  • メソッドsolve()を定義します。これはルートを取り、制限します
  • ノードに左右のサブツリーがない場合は、
    • rootの値が1未満の場合はnullを返し、そうでない場合はroot
  • ルートがサブツリーを離れている場合、ルートの左側:=resolve(ルートの左側、制限–ルートの値)
  • ルートに右のサブツリーがある場合、ルートの右:=solve(ルートの右、制限–ルートの値)
  • ルートに左サブツリーまたは右サブツリー、あるいはその両方がある場合は、ルートを返します。それ以外の場合はnullを返します。

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def sufficientSubset(self, root, limit):
      """
      :type root: TreeNode
      :type limit: int
      :rtype: TreeNode
      """
      if not root.left and not root.right:
         return None if root.val<limit else root
      if root.left:
         root.left= self.sufficientSubset(root.left,limit-root.val)
      if root.right:
         root.right = self.sufficientSubset(root.right,limit-root.val)
      return root if root.left or root.right else None

入力

[1,2,3,4,-99,-99,7,8,9,-99,-99,12,13,-99,14]
1

出力

[1,2,3,4,null,null,7,8,9,null,14]

  1. Pythonで二分木を反転する

    二分木があるとします。私たちの仕事は、逆二分木を作成することです。したがって、ツリーが以下のようになっている場合- 反転したツリーは次のようになります これを解決するために、再帰的アプローチを使用します ルートがnullの場合は、戻ります 左右のポインタを入れ替える 左のサブツリーと右のサブツリーを再帰的に解決します 例(Python) 理解を深めるために、次の実装を見てみましょう- class TreeNode:    def __init__(self, data, left = None, right = None):    

  2. Pythonでのパスの合計

    1つのツリーと合計があるとします。そのパスをたどると、与えられた合計と一致する合計が得られるように、1つのパスを見つける必要があります。ツリーが[0、-3,9、-10、null、5]のようで、合計が14であるとすると、パス0→9→5があります。 これを解決するために、次の手順に従います。 ルートがnullの場合は、Falseを返します 左右のサブツリーが空の場合、sum – root.val =0の場合はtrueを返し、それ以外の場合はfalseを返します 戻り値solve(root.left、sum – root.val)またはsolve(root.right、su