本文共 886 字,大约阅读时间需要 2 分钟。
给定一个仅包含数字0-9的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。我们的任务是找出所有根节点到叶子节点的路径表示的数字之和。
为了解决这个问题,我们可以使用递归先序遍历的方法。每次访问一个节点时,我们将其值加到当前的路径数字中,然后递归地处理左子树和右子树。这样可以确保每条路径都被正确地计算。
struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right;};int f(TreeNode* root, int sum) { if (root == NULL) { return 0; } sum = sum * 10 + root->val; if (root->left == NULL && root->right == NULL) { return sum; } return f(root->left, sum) + f(root->right, sum);}int sumNumbers(TreeNode* root) { return f(root, 0);} 通过这种方法,我们可以高效地计算从根节点到叶子节点的所有路径数字之和。
转载地址:http://kfdg.baihongyu.com/