首页 > 其他 > 详细

lletcode-114. 二叉树展开为链表

时间:2021-07-21 16:56:55      阅读:12      评论:0      收藏:0      [点我收藏+]

 

 

 

 

 

 

技术分享图片

方法一:

/**
 * 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 {
public:
    vector<int> res;
    void flatten(TreeNode* root) {
        if(root==NULL)
            return;
        inorder(root);
        // TreeNode* h = new TreeNode();
        // h->right = root;
        TreeNode* p = root;
        if(root->right) root->right->val = res[0];  
        // 对root根节点直接改变val值,如果改变指针,导致函数返回值root会改变。
        for(int i = 1; i < res.size(); i++){
            TreeNode* temp = new TreeNode(res[i]);
            p->right = temp;
            p->left = NULL;
            p = temp;
        }

    }
    void inorder(TreeNode* root){
        if(root == NULL)
            return;
        res.push_back(root->val);
        if(root->left)
            inorder(root->left);
  
        if(root->right)
            inorder(root->right);
    }
};

方法二:

技术分享图片

/**
 * 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 {
public:
    void flatten(TreeNode* root) {
        // if(root==NULL)
        //     return;
        while(root!=NULL){
            if(root->left==NULL)
                root = root->right;
           else{
            cout<<"root->val:"<<root->val<<endl;
            TreeNode* temp = root->left;
            while(temp->right!=NULL){
                temp = temp->right;
                }
            temp->right = root->right;
            root->right = root->left;
            root->left = NULL;
            root = root->right;
            }
        }
    }
};

 

lletcode-114. 二叉树展开为链表

原文:https://www.cnblogs.com/ymec/p/15039445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!