【剑指Offer】数据流中的中位数 (Python)

题目描述

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

 方法一:

class Solution:
    # 返回二维列表,内部每个列表表示找到的路径
    def FindPath(self, root, expectNumber):
	path = []
	if not root:
	    return path
	if not root.left and not root.right and expectNumber == root.val:
	        return [[root.val]]
	else:
	    left = self.FindPath(root.left,expectNumber-root.val)
	    right = self.FindPath(root.right,expectNumber-root.val)
	    for i in left + right:
	        path.append([root.val] + i)
	    return path

方法二:

# -*- 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
        if not root:
            return []
        path = []
        res = []
        self.find(root,expectNumber,path,res)
        return res
    def find(self,root,num,path,res):
        if not root:
            return
        if not root.left and not root.right and num == root.val:
            res.append(path+[root.val])
            return 
        self.find(root.left,num-root.val,path+[root.val],res)
        self.find(root.right,num-root.val,path+[root.val],res)

 

你可能感兴趣的:(剑指offer_Java)