剑指offer第34:二叉树中和为某一值的路径(N)

题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

# -*- 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 []
        result=[]
        def FindPathMain(root, path,currentSum):
            currentSum+=root.val
            path.append(root)
            isLeaf=root.left==None and root.right==None
            if expectNumber==currentSum and isLeaf:
                onePath=[]
                for node in path:
                    onePath.append(node.val)
                result.append(onePath)
            if expectNumber>currentSum:
                if root.left:
                    FindPathMain(root.left,path, currentSum)
                if root.right:
                    FindPathMain(root.right, path, currentSum)
            path.pop()
        FindPathMain(root,[],0)
        return result
 
 

挺复杂的,看了好一阵才想明白。写的时候能犯的错误都犯了。之后复习。

ps:A==None 和not A 之间的联系与区别??


猜你喜欢

转载自blog.csdn.net/zhangjiaxuu/article/details/80976542