LeetCode(114) Flatten Binary Tree to Linked List

来源:互联网 发布:网络语狗粮 编辑:程序博客网 时间:2024/05/22 02:13

递归算法

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<TreeNode*> recursion(TreeNode *root) {        vector<TreeNode*> result(2, NULL);        if(root->left == NULL && root->right == NULL) {            result[0] = root;            result[1] = root;            return result;        }        if(root->left != NULL && root->right != NULL) {            vector<TreeNode*> tmpResultLeft = recursion(root->left);            vector<TreeNode*> tmpResultRight = recursion(root->right);            root->left = NULL;            root->right = tmpResultLeft[0];            tmpResultLeft[1]->right = tmpResultRight[0];            result[0] = root;            result[1] = tmpResultRight[1];            return result;         }        if(root->left == NULL && root->right != NULL) {            vector<TreeNode*> tmpResultRight = recursion(root->right);            root->right = tmpResultRight[0];            result[0] = root;            result[1] = tmpResultRight[1];            return result;        }        if(root->left != NULL && root->right == NULL) {            vector<TreeNode*> tmpResult = recursion(root->left);            root->left = NULL;            root->right = tmpResult[0];            result[0] = root;            result[1] = tmpResult[1];            return result;        }    }    void flatten(TreeNode* root) {        if(root == NULL)            return;        recursion(root);    }};
0 0