二分木とパス値:オファー(XXIV)の勝利

二分木とパス値:オファー(XXIV)の勝利

検索マイクロチャネル公共番号:「AI-ming3526」以上のアルゴリズム、機械学習のための「この小さなコンピュータビジョン」、ドライ
CSDN:https://blog.csdn.net/baidu_31657889/
GitHubの:https://github.com/あいみ-CN / AILearners

まず、プライマー

このシリーズは、独自のアルゴリズムの下で能力を強化することを目指して、オンラインの質問ノートの牛をはねのける「安全オファーを証明するために、」私のブラシです。
安全性の問題を証明することを決議オファーをクリックして、完全なアルゴリズムを表示:安全オファー完全な分析演習を証明するために

第二に、タイトル

入力バイナリツリーのルートノードと整数、入力パスおよび全ての整数のノードのバイナリプリント値。パス定義のパスを形成することにより、ダウンリーフノードへのツリーのルート・ノードから始まるノードを横断してきました。(注:リスト内の戻り値、大きいアレイアレイフロント)

1、アイデア

2つのグローバル変数は、結果とtmpが、一時的な結果を格納するための最終的な結果、TMPを保持するためになります。

tmpに、その後、現在のルートを満たすかどうかを判断するために、すべてのトラバーサル、私たち最初のルート値のステッチ:

  • 左部分木は空ではありません
  • 右のサブツリーは空ではありません
  • そして、スプライシングと値の結果が等しいexpectNumberであるかどうか

条件が満たされた場合、それはそうでない場合は、左右のサブツリートラバーサルを回し、スプライシングtmpになります。左右のサブツリートラバーサルは、グローバル変数tmpが、やってバックトラックしたときとリーフノードのパスが要件を満たしていない場合なお、我々は戻っているので?これは、別の子ノードへのアクセスに戻って親ノードに続いリーフノードとを拭き取る必要はありません。

2、プログラミング

パイソン

コードの実装:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回二维列表,内部每个列表表示找到的路径
    def FindPath(self, root, expectNumber):
        # write code here
        def subFindPath(root):
            if root:
                tmp.append(root.val)
                if not root.right and not root.left and sum(tmp) == expectNumber:
                    result.append(tmp[:])
                else:
                    subFindPath(root.left),subFindPath(root.right)
                # 回溯
                tmp.pop()
        result, tmp = [], []
        subFindPath(root)
        sorted(result, key=len, reverse=True)
        return result

AIの詳細については、AIMI-CN AI学習交換基[1015286623]

技術、生活の中で楽しく共有:公共の私達の数コンピュータビジョンこの小さな週プッシュ「AI」シリーズのニュース記事を、あなたの関心を歓迎します!

おすすめ

転載: www.cnblogs.com/aimi-cn/p/11433518.html