LC-二叉树根节点到叶子节点的所有路径和

二叉树根节点到叶子节点的所有路径和

//二叉树根节点到叶子节点的所有路径和
/*
给定一个仅包含数字
 0−9\ 0-9
 0−9 的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。
例如根节点到叶子节点的一条路径是
1→2→31\to 2\to 3
1→2→3,那么这条路径就用
 123\ 123
 123 来代替。
找出根节点到叶子节点的所有路径表示的数字之和
*/
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    vector<int> oneroot;
	vector<vector<int>> result;
	int res = 0;
	void dfs(TreeNode* root)
	{
		oneroot.push_back(root->val);
		if (root->left)
		{
			dfs(root->left);
		}
		if (root->right)
		{
			dfs(root->right);
		}
		if (root->left == nullptr&&root->right == nullptr)
		{
			result.push_back(oneroot);
		}
		oneroot.pop_back();
	}
	int sumNumbers(TreeNode* root) {
        if(root==nullptr)
            return 0;
        if (root->left == nullptr&&root->right == nullptr)
			return root->val;
		dfs(root);
		int ressize = result.size();
		int res0size = result[0].size();

		for (int i = 0; i < ressize; ++i)
		{
			int onepathSize = result[i].size();
			int onepathres = 0;
			for (int j = 0; j <onepathSize; ++j)
			{
				onepathres += result[i][j] * pow(10, onepathSize - j - 1);
			}
			res += onepathres;
		}
		return res;
	}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值