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;
	}
};
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页