1. 题目

给定一个二叉树,原地将它展开为链表(右侧路径)。

例如,给定二叉树1/ \2   5/ \   \
3   4   6
将其展开为:1\2\3\4\5\6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 递归解题

class Solution {public:void flatten(TreeNode* root) {f(root);}TreeNode* f(TreeNode* root)//返回的是最底端的节点指针{if(!root)return NULL;TreeNode *l = f(root->left);TreeNode *r = f(root->right);if(!l && !r)return root;else if(!l && r)return r;else if(l && !r){swap(root->left,root->right);return l;}else{swap(root->left,root->right);l->right = root->left;root->left = NULL;return r;}}
};
  • 评论区简洁题解
class Solution {public:TreeNode* last = nullptr;void flatten(TreeNode* root) {if(root == nullptr) return;flatten(root->right);flatten(root->left);root->right = last;root->left = nullptr;last = root;}
};

LeetCode 114. 二叉树展开为链表(递归)相关推荐

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

    Time: 20190901 Type: Medium 题目描述 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1/ \2 5/ \ \ 3 4 6 将其展开为: 1\2\3\4\5\6 来 ...

  2. LeetCode 114 二叉树展开为链表

    题目链接:力扣​​​​​​ 思路:递归 递归函数声明: void flatten(TreeNode* root); 递归出口: 如果根节点为空,返回(不操作) 如果只有根节点,返回 (不操作) 递归体 ...

  3. Leetcode 114. 二叉树展开为链表 解题思路及C++实现

    解题思路: 使用递归的方法.根结点的左子树中,最右边的节点是左子树成为链表后的最后一个节点,找到这个节点,然后把这个节点的右节点指向根结点的右子树,同时,将根结点右子节点指向其左子节点,根结点的左子节 ...

  4. 【LeetCode】【HOT】114. 二叉树展开为链表(原地置换)

    [LeetCode][HOT]114. 二叉树展开为链表 文章目录 [LeetCode][HOT]114. 二叉树展开为链表 package hot;import java.util.ArrayLis ...

  5. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  6. 力扣114. 二叉树展开为链表(C++,解释一下别人的思路)

    题目链接: 114. 二叉树展开为链表 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/flatten-binary- ...

  7. 114. 二叉树展开为链表 golang

    114. 二叉树展开为链表 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1/ \2 5/ \ \ 3 4 6 将其展开为: 1\2\3\4\5\6 Code /*** Definition ...

  8. [Leetcode][第114题][JAVA][二叉树展开为链表][递归][迭代]

    [问题描述][中等] [解答思路] 1. 前序遍历 将二叉树展开为单链表之后,单链表中的节点顺序即为二叉树的前序遍历访问各节点的顺序.因此,可以对二叉树进行前序遍历,获得各节点被访问到的顺序. 由于将 ...

  9. leetocde —— 114. 二叉树展开为链表

    给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 -------- 解题思路:借鉴windliang发布在leetcode题解上的第一个思路,利用先序遍历,将二叉树展开成一个链表. 将左子树插入 ...

最新文章

  1. 深入理解RunLoop(转载)
  2. maven dependency中scope=compile 和 provided区别
  3. ThreadLocal的意义和实现
  4. UVa 1583 Digit Generator(枚举+打表)
  5. [C++] map 迭代器 查找
  6. 模拟监控和真实用户体验监测,选哪个?
  7. emacs工程管理,cedet ede插件自动构建Make,Automake
  8. oracle11g密码效期及用户锁定
  9. MariaDB学习记录
  10. SQLite学习笔记(二)--VC调用环境搭建
  11. Photoshop:PS如何实现放大图片不模糊
  12. vue jsonp跨域
  13. 2019测试指南-web应用程序安全测试(二)指纹Web应用程序
  14. css 手风琴_如何创建基于CSS的内容手风琴
  15. Google代码规范书写格式,告别丑陋代码
  16. 安卓高级面试知识整理
  17. 抓取 google 搜索结果
  18. [Spring手撸专栏学习笔记]——把AOP动态代理,融入到Bean的生命周期
  19. 程序设计与算法郭炜老师的课堂笔记2
  20. 用Python画一只溜达小狗——turtle库基础入门

热门文章

  1. Python3.10 结构化模式匹配 PEP 634
  2. android string数组转json_移动端开发基础【20】pages.json的配置项pages
  3. Linux进程全解8——exec 族函数
  4. SCOM Rule 介绍 [SCOM中文系列之六]
  5. Delphi控件的“拿来主义”
  6. PHP页面显示中文字符出现乱码
  7. Leetcode389
  8. 【代码笔记】iOS-UILable电子表显示
  9. CentOS6.4安装包初识
  10. Oracl数据库中大数据的备份-2