回答引用自GPT-4o,由博主小ᶻZ࿆编写,若还有疑问可评论或留言:
// 定义二叉树的结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 计算所有从根节点到叶子节点的路径乘积总和
int sumOfPathProducts(TreeNode* root) {
// 如果当前节点为空,返回0
if (root == NULL) {
return 0;
}
// 如果是叶子节点,返回节点的值
if (root->left == NULL && root->right == NULL) {
return root->val;
}
// 递归计算左右子树的路径乘积和
int leftProduct = sumOfPathProducts(root->left);
int rightProduct = sumOfPathProducts(root->right);
// 返回当前节点值乘以左子树和右子树路径和
return (leftProduct + rightProduct) * root->val;
}
思路:
递归遍历二叉树,从根节点到叶子节点的路径定义为将所有节点的值相乘。
如果当前节点是叶子节点,直接返回该节点的值。
如果当前节点有子节点,则递归计算左右子树的路径乘积和,并乘上当前节点的值。
最终返回所有路径的乘积总和。
如有帮助,题主可以帮忙采纳一下嘛,谢谢~