zoukankan      html  css  js  c++  java
  • 剑指offer python版 某一路径和为某值

    from collections import deque
    
    
    class TreeNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    
    class Tree(object):
        def __init__(self):
            self.root = None
    
        def construct_tree(self, values=None):
            if not values:
                return None
            self.root = TreeNode(values[0])
            queue = deque([self.root])
            leng = len(values)
            nums = 1
            while nums < leng:
                node = queue.popleft()
                if node:
                    node.left = TreeNode(values[nums]) if values[nums] else None
                    queue.append(node.left)
                    if nums + 1 < leng:
                        node.right = TreeNode(values[nums + 1]) if values[nums + 1] else None
                        queue.append(node.right)
                        nums += 1
                    nums += 1
    
    
    def find_path(tree, num):
        ret = []
        if not tree:
            return ret
        path = [tree]
        sums = [tree.val]
    
        def dfs(tree):
            if tree.left:
                path.append(tree.left)
                sums.append(sums[-1]+tree.left.val)
                dfs(tree.left)
            if tree.right:
                path.append(tree.right)
                sums.append(sums[-1] + tree.right.val)
                dfs(tree.right)
            if not tree.left and not tree.right:
                if sums[-1] == num:
                    ret.append([p.val for p in path])
            path.pop()
            sums.pop()
    
        dfs(tree)
        return ret
    
    
    if __name__ == '__main__':
        t = Tree()
        t.construct_tree([1, 3, 6, 4, 3, 1, 1])
    print find_path(t.root, 8)
  • 相关阅读:
    第七次
    第六次作业
    第五次作业
    第四次作业
    百度网盘生成二维码api
    【css3】--四种气泡
    纯CSS气泡框实现方法探究
    三种带箭头提示框总结实例
    纯CSS实现气泡框
    Windows 上 GitHub Desktop 的操作
  • 原文地址:https://www.cnblogs.com/xzm123/p/9875698.html
Copyright © 2011-2022 走看看