20190413-Leetcode-114.二叉树展开为链表

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

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

给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
在这里插入图片描述
将其展开为:
在这里插入图片描述
思路1:把所有树的所有结点先序遍历放在vector中,然后依次连接,连接所有的结点。
代码1

class Solution {
public:
    void preorder(TreeNode* root, vector<TreeNode* >& tree_list){
        if(root == NULL){
            return;
        }    
        tree_list.push_back(root);
        preorder(root->left, tree_list);
        preorder(root->right, tree_list);
    }
    
    void flatten(TreeNode* root) {
        vector<TreeNode* > tree_list;
        preorder(root, tree_list);
        for(int i = 1; i < tree_list.size(); i++){
            tree_list[i - 1]->right = tree_list[i];
            tree_list[i - 1]->left = NULL;
        }
    }
};
给定一个二叉树原地将它展开链表 给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / 2 5 / \ 3 4 6 将其展开为: 1 2 3 4 5 6 思路:可以发现展开的顺序其实就是二叉树的先序遍历。算法和 94 题中序遍历的 Morris 算法有些神似,我们需要两步完成这道题。 将左子树插入到右子树的地方 将原来的右子树接到左子树的最右边节点 考虑新的右子树的根节点,一直重复上边的... 阅读详情

相关推荐

将一颗二叉树展开链表

题目描述: 给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 代码如下: /** * Definition for a binar...

Light丶Long的博客 278

Python刷leetcode114. 二叉树展开链表

给定一个二叉树原地将它展开链表。例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6思路:递归实现,暂存右结点,将左结点接在根结点右边,然后把暂存的右结点接在后面...

weixin_40314737的博客 1080

JAVA程序设计:二叉树展开链表LeetCode114

给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 思路: 方法一: class Solution { public void...

信仰.的博客 692

114. 二叉树展开链表

给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 前序遍历二叉树同时分别将左右子树压入栈中 /** * Definition...

码奴生来就只知道前进 657

LeetCode114. 二叉树展开链表

给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 题目分析:由题目的例子,我们可以通过以下几步来展开二叉树: 1.首先,将根节点的...

Jaster_wisdom的专栏 1619

Leetcode 114二叉树展开链表(超详细的解法!!!)

给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解题思路 这个问题非常简单。 我们先要找到root.left的最...

coordinate的博客 1801

面试题27:二叉搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。比如输入下图中左边儿茶搜索树,则输出转换后的排序双向链表。 10 / \ 6 14 / \ / \ 4 8 12 16 4=6=8=10=12=14=16  将二叉搜索树转化为有序双向链表,类似于中序遍历,中序遍...

weixin_33827731的博客 366

LeetCode算法114二叉树展开链表解析

给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 这个题的思路是直接把左子树插入到根节点与右子树之间,可以用迭代来做。 C++源代码: /**...

Alex的博客 352

二叉树展开链表

题目描述 给定一个二叉树原地将它展开一个链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 算法思想 第一种: 先把左子树排好,然后将左子树加到根节点的右节点上,再把右子树接到排好的左子树上,最后对右子树进行排序。 第二种: 把左子树和右子树排好了,然后将左子树接到根节点

流年、烟雨 509

二叉树(一)——二叉树的基本实现(数组实现和链表实现)

1.树是一种数据结构,树的一些相关的术语: 结点的度:一个结点的后继结点的个数。 树的度:树中度值最大的结点的度被称为树的度。 树的深度:树的层次数。 分支结点:度值大于0的结点,分支结点至少含有一个后继,分支结点也称为非终端结点。 叶子结点:树中的度值为0的结点。 双亲结点:树中某个结点的前驱结点,也成为父节点。 子女结点:树中某结点的后继结点。 兄弟结点:树中同一层的结点。

laoniu_c的专栏 7710

leetcode 114. 二叉树展开链表

题目描述: 给定一个二叉树原地将它展开链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 代码:、 方法一、后序遍历递归。 class Solut...

行走巨人国 3942

给定一个二叉树原地将它展开一个链表

/** * 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) {} *.

qq_29238153的博客 480

二叉树转换成双向链表

简述: 二叉排序树在不改变BinaryNode的 struct{data;*left;*right}  情况下是可以转换成双向链表. 由于二叉树的主要数据都记录在根节点BinaryNode* root 上的,所以这里就只用BinaryNode类手动建一棵树, 树形如下: 新增的有三个主要函数, BinaryNode* GetHead() 是用来查找右子树最小的那个节

霖林烟雨 1万+

20190417-Leetcode-409.最长回文数

Leetcode-409.最长回文数 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例 1: 输入: “abccccdd” 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 思路: 用一个数组存放A-Z和a...

WangXu__的博客 1204

20190509-Leetcode-938.二叉搜索树的范围和

Leetcode-938.二叉搜索树的范围和 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。 二叉搜索树保证具有唯一的值。 示例 1: 输入:root = [10,5,15,3,7,null,18], L = 7, R = 15 输出:32 示例 2: 输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10 输出...

WangXu__的博客 431

20190425-Leetcode-473.火柴拼正方形

Leetcode-473.火柴拼真方形 还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。 输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。 示例 1: 输入: [1,1,2,2,2] 输出: true 解释: 能拼成一个边长为2的正方形,每边...

WangXu__的博客 402

20190604-Leetcode-977. 有序数组的平方

Leetcode-977. 有序数组的平方 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2: 输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121] 提示: 1 <= A.length <= 10000 -10000 <=...

WangXu__的博客 395

Leetcode-560. 和为K的子数组

Leetcode-560. 和为K的子数组     给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 :     数组的长度为 [1, 20,000]...

WangXu__的博客 374

Leetcode-633. 平方数之和

Leetcode-633. 平方数之和      给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 aa + bb = c。 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输入: 3 输出: False 思路:      双指针法。但是注意lef...

WangXu__的博客 364
上一篇: 20190413-Leetcode-112.路径总和
下一篇: 20190413-Leetcode-199.二叉树的右视图
WangXu__
博客等级 码龄9年 3粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值