zoukankan      html  css  js  c++  java
  • 剑指offer 二叉树中和为某一个值的路径

    剑指offer 牛客网 二叉树中和为某一个值的路径

    # -*- coding: utf-8 -*-
    """
    Created on Tue Apr  9 15:53:58 2019
    
    @author: Administrator
    题目:
    输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
    路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
    (注意: 在返回值的list中,数组长度大的数组靠前)
    思路:
    采用递归的思路
    """
    
    # -*- 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 []
            #如果只有一个值,并且刚好和期望的值相等,就直接返回节点的值
            if root and not root.left and not root.right and root.val == expectNumber:
                return [[root.val]]
            res = []
            #递归传入的是左右子节点,期望值在是减去根节点的值,最后只剩下叶子节点的值了
            left = self.FindPath(root.left,expectNumber-root.val)
            right = self.FindPath(root.right,expectNumber-root.val)
            #将符合的数据加入
            for i in left + right:
                res.append([root.val] + i)
            return res
            
            
    if __name__ == '__main__':
        solution = Solution()
        node_left = TreeNode(4)
        node_right = TreeNode(7)
        root_left = TreeNode(5)
        root_left.left = node_left
        root_left.right = node_right
        
        root_right = TreeNode(12)
        root = TreeNode(10)
        root.left = root_left
        root.right = root_right
        expectNumber = 22
        res = solution.FindPath(root,expectNumber)
        print(res)  #[[10, 5, 7], [10, 12]]
  • 相关阅读:
    cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记
    cocos代码研究(5)Action学习笔记
    cocos代码研究(1)Node学习笔记
    cocos代码研究(2)Label学习笔记
    顽石系列:Linux基础笔试
    Spring笔记:事务管理
    Spring笔记:AOP基础
    Spring笔记:IOC基础
    MyBatis:学习笔记(4)——动态SQL
    Linux:进程管理
  • 原文地址:https://www.cnblogs.com/missidiot/p/10678898.html
Copyright © 2011-2022 走看看