二叉树展开为链表—leetcode114
给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
1
/ \
2 5
/ \ \
3 4 6
将其展开为:
1
\
2
\
3
\
4
\
5
\
6
思路1:这里暂不考虑题目要求的原地转换,可以先先序遍历二叉树保存节点,然后遍历节点,left均置为null,right连接相邻节点
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<TreeNode*> list;void flatten(TreeNode* root) {if(root==NULL)return;TreeNode* temp_root = root;prefirst(temp_root);int n = list.size();for(int i=0;i<n-1;++i){list[i]->right = list[i+1];list[i]->left = NULL;}list[n-1]->right = NULL;list[n-1]->left = NULL;root = list[0];}void prefirst(TreeNode* root){if(root){list.push_back(root);prefirst(root->left);prefirst(root->right);}}
};
思路2: 先利用DFS的思路找到最左子节点,然后回到其父节点,把其父节点和右子节点断开,将原左子结点连上父节点的右子节点上,然后再把原右子节点连到新右子节点的右子节点上,然后再回到上一父节点做相同操作。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<TreeNode*> list;void flatten(TreeNode* root) {if (root==NULL)return;if (root->left) flatten(root->left);if (root->right) flatten(root->right);TreeNode *tmp = root->right;root->right = root->left;root->left = NULL;while (root->right) root = root->right;root->right = tmp;}
};
二叉树展开为链表—leetcode114相关推荐
- 114. Flatten Binary Tree to Linked List 二叉树展开为链表
给定一个二叉树,原地将它展开为一个单链表. 例如,给定二叉树 1/ \2 5/ \ \ 3 4 6 将其展开为: 1\2\3\4\5\6 前序遍历 将二叉树展开为单链表之后,单链表中的节点顺序即为二叉 ...
- 114. 二叉树展开为链表 golang
114. 二叉树展开为链表 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1/ \2 5/ \ \ 3 4 6 将其展开为: 1\2\3\4\5\6 Code /*** Definition ...
- java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...
- [Leetcode][第114题][JAVA][二叉树展开为链表][递归][迭代]
[问题描述][中等] [解答思路] 1. 前序遍历 将二叉树展开为单链表之后,单链表中的节点顺序即为二叉树的前序遍历访问各节点的顺序.因此,可以对二叉树进行前序遍历,获得各节点被访问到的顺序. 由于将 ...
- 力扣114. 二叉树展开为链表(C++,解释一下别人的思路)
题目链接: 114. 二叉树展开为链表 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/flatten-binary- ...
- 【LeetCode】【HOT】114. 二叉树展开为链表(原地置换)
[LeetCode][HOT]114. 二叉树展开为链表 文章目录 [LeetCode][HOT]114. 二叉树展开为链表 package hot;import java.util.ArrayLis ...
- 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先
前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...
- leetcode--114 二叉树展开为链表
给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1/ \2 5/ \ \ 3 4 6 将其展开为: 1\2\3\4\5\6 AC: /*** Definition for a binary t ...
- leetcode114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ ...
最新文章
- 消息中间件客户端消费控制实践
- ASP.NET - 截取固定长度字符串显示在页面,多余部分显示为省略号
- 笔记-项目立项管理-项目论证的程序
- CentOS7安装MySQL(完整版)
- 应届生求职数据分析师指南
- 如何获取 SAP Commerce Cloud Spartacus UI 购物车 Cart 的加载状态
- Spring Bean Scope 有状态的Bean 无状态的Bean
- 使用Hazelcast发布和订阅
- ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”的解决方法
- Groovy语言之SpringBoot整合JDBC案例
- 将本地已经存在的代码跟github上新建的仓库建立关联,解决“fatal: 'origin' does not appear to be a git repository...”
- Python AES
- JAVA类的无参方法
- gc日志怎么看_JVM探秘:GC日志收集与分析
- 金山毒霸喜新厌旧 推荐QQ电脑管家抛弃金山卫士?
- 计算机组装维修中级试题,维修电工中级培训考试题及答案
- 斐讯k2路由虚拟服务器,斐讯K2T分离式无线路由器 新思路解决老问题(无线信号那些事)...
- Python解析CDD文件
- Spark 连接kafka报错: Error while fetching metadata with correlation id xx [topicName=INVALID_REPLICATIO]
- 万字长文 | 面向k8s编程,如何写一个Operator
热门文章
- 计算机音乐乐谱再也没有,再也没有简谱-Ryan.B/杨佬叁演唱-孙世彦制谱
- c++ STL find search
- python初步学习-查看文档及数据类型转换
- 浅谈 温故知新——HTML5!
- win系统注册缺少的库 32位系统 64位系统
- 中文Ubuntu主目录下的文档文件夹改回英文
- 制作WEB在线编辑器-插入HTML标签
- JAVA WEB_中间件
- php extname shared,PHP: 编写第一个PHP扩展
- [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)