📅  最后修改于: 2023-12-03 15:28:48.244000             🧑  作者: Mango
这是一道关于二叉树的题目。给定一棵二叉树,每个节点上都有一个权值,权值有正有负。定义二叉树的路径为从一个节点往下走,直到叶节点为止。路径上所有节点的权值和即为该路径的权值。二叉树的路径可以看作是一条从根节点开始往下走的边的序列。请编写一个函数,用来求解二叉树中权值和最大的路径。例如,下面所示的二叉树。
1
/ \
2 3
/ \ / \
4 5 6 7
这棵树中,最大的路径是 2 -> 5 -> 1 -> 3 -> 7
,路径上的节点权值和为 2 + 5 + 1 + 3 + 7 = 18
。
输入包含多组数据,每组数据由多行组成,表示一棵二叉树的节点权值。二叉树以先序遍历的方式输入,其中空树用字符 #
表示。每个数字之间用单个空格隔开,节点权值的大小不超过 1000
。
对于每组数据,输出一行,其中包含一个整数,表示该二叉树中权值和最大的路径所包含的数字之和。
-1 7 -1 6 -1 -1 3 -1 -1
-10 9 20 # # 15 7
13
44
输入的二叉树大小不超过 10000
个节点,输入数据总共包含不超过 100
组。