Sum of Root To Leaf Binary Numbers
Input: root = [1,0,1,0,1,0,1]
Output: 22
Explanation: (100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22
Input: root = [0]
Output: 0
Input: root = [1]
Output: 1Solutions
π§ Cpp
Last updated
Input: root = [1,0,1,0,1,0,1]
Output: 22
Explanation: (100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22
Input: root = [0]
Output: 0
Input: root = [1]
Output: 1Last updated
Input: root = [1,1]
Output: 3/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution
{
//list of binary represented
static list<list<int>> getAllNumbers(TreeNode* root)
{
if(!root)
return {};
//if leaf
if(!root->left && !root->right)
return list<list<int>>{{root->val}};
list<list<int>> res;
auto process_leaf = [&](TreeNode* leaf)
{
if(leaf)
for(auto num : getAllNumbers(leaf))
{
num.push_front(root->val);
res.push_back(num);
}
};
process_leaf(root->left);
process_leaf(root->right);
return res;
}
public:
int sumRootToLeaf(TreeNode* root)
{
int res = 0;
for(auto num : getAllNumbers(root))
{
string binary_string;
for(int bit : num)
binary_string.push_back(to_string(bit)[0]);
res += std::stoi(binary_string, nullptr, 2);
}
return res;
}
};