python-026-找出与输入值相等的二叉树路径。

给定一个二叉树,并输入一个数,找出二叉树中从根节点到叶子节点的路径和与输入值相等的路径。

这篇放了很久了,是以前写的,今天没有新的产出,写了一下午的C。
真是难为我了。

import random
class BiTNode:
    def __init__(self, arg):
        self.data = arg
        self.left_child = None
        self.right_child = None
# 构造二叉树
def constructBitree(x):
    # x为二叉树节点个数
    arr=[]
    for i in range(x):
        arr.append(random.randint(-9, 9))
    root=arrayToBiTree(arr)
    return root
def arrayToBiTree(array):
    #判断arr是否为空
    if len(array)==0:
        return BiTNode(array[0])
    mid=len(array)//2 # 有序数组的中间元素的下标
    # print(mid)
    # start=0 # 数组第一个元素的下标
    # end=-1 # 数组最后一个元素的下标
    root = None
    if len(array) > 0:
        # 将中间元素作为二叉树的根
        root=BiTNode(array[mid])
        # 如果左边的元素个数不为零,则递归调用函数,生成左子树
        if len(array[:mid]) > 0:
            root.left_child = arrayToBiTree(array[:mid])
        # 如果右边的元素个数不为零,则递归调用函数,生成左子树
        if len(array[mid+1:]) > 0:
            root.right_child = arrayToBiTree(array[mid+1:])
    return root

# 从此之后函数命名都应该用下划线分割单词
def find_path(root, number, path, sum_path):
    if root is None:
        return None
    # 前序遍历,保存从根节点到叶子节点的路径,并记录值
    sum_path = sum_path + root.data
    path.append(root.data) # 将根节点加入列表
    # 如果当前节点为叶子节点,且路径和与输入值相等,输出并继续遍历
    if (root.left_child is None and root.right_child is None) and sum_path == number:
        print("存在路径!")
        print(path)

    # else:
    #   print("不存在路径!")
    # 遍历左子树
    if root.left_child is not None:
        find_path(root.left_child, number, path, sum_path)
    # 遍历右子树
    if root.right_child is not None:
        find_path(root.right_child, number, path, sum_path)
    path.pop()
    sum_path = sum_path - root.data
if __name__ == '__main__':
    root1 = constructBitree(100)
    num = int(input("请输入一个值:\n"))
    sum_path = 0  # 记录路径和
    tree_path = []  # 用于记录路径
    find_path(root1, num, tree_path, sum_path)
# if tree_path:
#   print("存在路径!\n为:")
# else:
#   print("不存在路径!")

今天有点事情,而且电脑键盘坏了。就不多shuole.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一片黄叶,随风而落 空留一声叹息 可是,又有谁知 树的伤心 拣一枚最美的落叶 用世间最美的文字 书写我满腔的思念 ...
    豫西笑笑生阅读 601评论 0 1
  • 我从未与你说过喜欢 亦从未对你谈过大爱 我守着你 就像守着童年的稚趣 我望着你 就像望着年少的梦想 我对你那些从未...
    哀慕熙荣阅读 236评论 0 1
  • 一直很喜欢画画,自己手绘了一双鞋子,手法还不是很娴熟,不过我会努力的。
    偷时间的人儿阅读 98评论 1 1
  • 小时候 与老爸一起驰聘在球场挥汗淋漓 觉得很酷 长大后 敢于在社交平台对朋友说 “This is my ...
    odbo阅读 265评论 0 0
  • 本文转自 当年的春天 的博客,原文地址:http://blog.csdn.net/zhanghan18333611...
    Android10阅读 1,329评论 0 1