LeetCode:46.二叉树展开为链表

二叉树展开为链表

目录

1.前序遍历

2.前驱节点


1.前序遍历

对于这道题我们可以使用前序遍历来保存每一个节点并将其连接起来

cpp 复制代码
class Solution {
public:
    void flatten(TreeNode* root) 
    {
        vector<TreeNode*> ret;
        prevorder(root, ret);
        int n = ret.size();
        for(int i = 1; i < n; i++)
        {
            TreeNode* prev = ret[i - 1], *cur = ret[i];
            prev->left = nullptr;
            prev->right = cur;
        }
    }

    void prevorder(TreeNode* root, vector<TreeNode*>& ret)
    {
        if(root == nullptr)
            return;

        ret.push_back(root);
        prevorder(root->left, ret);
        prevorder(root->right, ret);
    }
};

2.前驱节点

cpp 复制代码
class Solution {
public:
    void flatten(TreeNode* root) {
        while(root != nullptr)
        {
            if(root->left != nullptr)
            {
                TreeNode* prev = root->left;
                while(prev->right != nullptr)
                    prev = prev->right;
                prev->right = root->right;
                root->right = root->left;
                root->left = nullptr;
            }
            root = root->right;
        }
    }
};
相关推荐
小欣加油4 小时前
leetcode 206 反转链表
数据结构·c++·算法·leetcode·链表·职场和发展
野犬寒鸦4 小时前
力扣hot100:环形链表II(哈希算法与快慢指针法思路讲解)
java·数据结构·算法·leetcode·链表·哈希算法
强化学习与机器人控制仿真5 小时前
LeRobot 入门教程(九)使用 Android、iOS 手机控制机械臂
开发语言·人工智能·stm32·深度学习·神经网络·算法·机器人
listhi5206 小时前
自适应全变分模型的图像平滑去噪与边缘保留算法
图像处理·算法·计算机视觉
wei-dong-183797540087 小时前
嵌入式硬件笔记:三种滤波电路的对比
笔记·嵌入式硬件·算法
泊风9367 小时前
深入C语言底层系列28-埃拉托斯特尼筛法
c语言·开发语言·算法
爱吃煎蛋的小新7 小时前
C#语法回忆零散巩固(持续更新最新版)
java·开发语言·笔记·学习·算法·c#
CoovallyAIHub7 小时前
时隔 8 年,李飞飞领衔,CS231n 2025版来了!
深度学习·算法·计算机视觉
宇钶宇夕8 小时前
S7-200 SMART PLC 以太网通信详解:3 种方式从原理到实操
运维·算法·自动化