二叉树根节点到叶子节点的所有路径数字和
二叉树根节点到叶子节点的所有路径和
http://www.nowcoder.com/questionTerminal/185a87cd29eb42049132aed873273e83
毋庸置疑,用先序遍历。
但是实现起来却有点问题。
刚开始我用一个string类型变量保存路径上所有数字,用一个int &sum保存结果,但是只通过了95%。
后面发现其实可以直接通过一个数字传递路径上数字和,遇到叶节点返回左右子树相加的结果即可。
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int sumNumbers(TreeNode* root) {
// write code here
if(!root) return 0;
int sum = 0;
return preOrder(root, sum);
}
int preOrder(TreeNode *root, int sum) {
if (!root) return 0;
sum = 10 * sum + root->val;
if (!root->left && !root->right) return sum;
return preOrder(root->left, sum) + preOrder(root->right, sum);
}
};刷遍天下无敌手 文章被收录于专栏
秋招刷题历程
查看7道真题和解析
