二分木とパス値:オファー(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」シリーズのニュース記事を、あなたの関心を歓迎します!