Esempio n. 1
0
TreeNode* flatten_helper(TreeNode* root)
{
    cout << root->val << endl;
    if (root->left == NULL && root->right == NULL) return root;
    if (root->left == NULL) return flatten_helper(root->right);
    auto tmp = root->right;
    root->right = root->left;
    root->left = NULL;
    auto leftEndNode = flatten_helper(root->right);
    if (tmp != NULL) 
    {
        leftEndNode->right = tmp;
        return flatten_helper(tmp);
    }
    return leftEndNode;
}
Esempio n. 2
0
 static constexpr decltype(auto) apply(Xs&& xs) {
     using Raw = typename detail::std::remove_reference<Xs>::type;
     constexpr detail::std::size_t len = ::std::tuple_size<Raw>::value;
     return flatten_helper(detail::std::forward<Xs>(xs),
             detail::std::make_index_sequence<len>{});
 }
Esempio n. 3
0
void flatten(TreeNode* root)
{
    if (root == NULL) return;
    flatten_helper(root);
}