我是靠谱客的博主 务实秋天,最近开发中收集的这篇文章主要介绍Python计算二叉树路径总和(遍历、迭代),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。

叶子节点 是指没有子节点的节点。

示例 1:


输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
示例 2:
输入:root = [1,2,3], targetSum = 5
输出:false

提示:

树中节点的数目在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 100
链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xo566j/
来源:力扣(LeetCode)

#!/usr/bin/python3
# -*- coding: utf-8 -*-


class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


def has_path_sum_recursive(tree_node, total):
    if not tree_node:
        return False
    t = total - tree_node.val
    if not tree_node.left and not tree_node.right:
        return t == 0
    return has_path_sum_recursive(tree_node.left, t) or has_path_sum_recursive(tree_node.right, t)


def has_path_sum_non_recursive(tree_node, total):
    if not tree_node:
        return False
    # 存放当前节点;
    node_queue = [tree_node]
    # 存放当前节点到根节点的路径和;
    sum_queue = [tree_node.val]
    while node_queue:
        current_node, current_sum = node_queue.pop(0), sum_queue.pop(0)
        # 判断当前节点是否是叶子节点,如果是,判断能否满足路径和为total的条件;
        if not current_node.left and not current_node.right:
            if current_sum == total:
                return True
            else:
                continue
        # 把当前节点的左右子节点(如果存在)及其到根节点的路径和放入node_queue和sum_queue;
        if current_node.left:
            node_queue.append(current_node.left)
            sum_queue.append(current_node.left.val + current_sum)
        if current_node.right:
            node_queue.append(current_node.right)
            sum_queue.append(current_node.right.val + current_sum)
    return False


n1 = TreeNode(4)
n2 = TreeNode(2)
n3 = TreeNode(7)
n4 = TreeNode(1)
n5 = TreeNode(3)
n1.left = n2
n1.right = n3
n2.left = n4
n2.right = n5
print(has_path_sum_non_recursive(n1, 17))

 

最后

以上就是务实秋天为你收集整理的Python计算二叉树路径总和(遍历、迭代)的全部内容,希望文章能够帮你解决Python计算二叉树路径总和(遍历、迭代)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部