详细思路

前序遍历得到数组,对于数组内每一个节点,左子树为nullptr,右子树为下一个节点
 
精确定义
nodes前序遍历节点
class Solution {
public:
    void flatten(TreeNode* root) {
        if(!root)return ;
        vector<TreeNode*>nodes;
        dfs(root,nodes);
        int n=nodes.size();
        for(int i=0;i<n-1;i++){
            nodes[i]->left=nullptr;
            nodes[i]->right=nodes[i+1];
        }
        nodes[n-1]->left=nullptr,nodes[n-1]->right=nullptr;
        return;
    }
    void dfs(TreeNode*root,vector<TreeNode*>&nodes){
        if(!root)return ;
        nodes.push_back(root);
        dfs(root->left,nodes);
        dfs(root->right,nodes);
    }
};

 

posted on 2021-08-02 11:45  offer快到碗里来~  阅读(37)  评论(0)    收藏  举报