título Descrição
Um nó de entrada binária raiz de árvore e um inteiro, os valores de impressão binários de nós no caminho de entrada e todos os inteiros. Formando um caminho para a definição caminho começa a partir do nó raiz da árvore para baixo para o nó de folha foi atravessado nós. (Nota: o valor de retorno na lista, uma matriz de frente grande variedade)
pensamento
E para fazer isso antes em um leetcode encontrar todas as possíveis combinações de números como. Recursiva, mas lembre-se de adicioná-lo para determinar se os nós folha vir
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def FindPath(self, root, target):
anslist = []
if root:
if root.val < target:
left = self.FindPath(root.left,target-root.val)
right = self.FindPath(root.right,target-root.val)
if left:
anslist += [[root.val]+ans for ans in left]
if right>0:
anslist += [[root.val]+ans for ans in right]
return anslist
elif root.val == target:
if root.left or root.right:
return []
else:
return [[root.val]]
else:
return []
outra idéia
Encontrar todo o caminho da raiz para as folhas, em seguida, adicione o caminho e ver se o alvo. Aqui travessia e profundidade que pergunta antes leetcode como. Com três variáveis
A primeira variável de raiz
loja segunda variável todos os caminhos, cada endereço da matriz é transmitida, modificar directamente o conteúdo da matriz
A terceira variável contém o caminho atual, uma vez que o nó folha é alcançado, o caminho é armazenado nos caminhos ir.
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def FindPath(self, root, target):
if not root:
return []
paths = self.DFS(root,[],[root.val])
ans = []
for path in paths:
if sum(path) == target:
ans.append(path)
return ans
# 这里注意一下,之前写的不顺
def DFS(self,root,result,path):
if root.left == None and root.right==None:
result.append(path)
if root.left:
self.DFS(root.left,result,path+[root.left.val])
if root.right:
self.DFS(root.right,result,path+[root.right.val])
return result