https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/

Source

    int sumRootToLeaf(TreeNode* root) {
        if (nullptr == root) return 0;

        // root node has a value 0 or 1.
        // root-to-leaf : binary number => DFS, bin2dec
        m_sum = 0;
        DFS(root, "");

        // Return the sum of these numbers
        return m_sum;
    }

    int bin2dec(const string strBin) {
        const int lenBin = strBin.length();
        int dec = 0;
        for (int i=0; i<lenBin; ++i){
            const int b = strBin[i]-'0';
            dec = (b + (dec <<= 1));
        }
        return dec;
    }

    void DFS(TreeNode* node, const string bin) {
        if (nullptr == node) return;

        const string strNum = to_string(node->val);
        const string newBin = bin + strNum;

        if (nullptr == node->left && nullptr == node->right) {
            m_sum += bin2dec(newBin);
            return;
        }

        DFS(node->left, newBin);
        DFS(node->right, newBin);
    }

GitHub