LeetCode #114
来源:互联网 发布:2015十大网络神曲视频 编辑:程序博客网 时间:2024/05/01 17:10
题目描述:
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
其实分析题意就是把二叉树按照前序遍历的顺序形成链表,链表的结构是每个节点的下一个节点都是它的右节点,每个节点的左节点都为空。这道题可以直接前序遍历二叉树,同时用数组记录,然后重新构造一个二叉树,但是这样需要额外的空间。
此题可以用递归的方法解决,即先运用递归,将根节点的左子树、右子树化为链表,同时让根节点的右节点为左子树链表的起点,然后令右子树链表连接至左子树链表的末尾。
class Solution {public: void flatten(TreeNode* root) { root=DFS(root); } TreeNode* DFS(TreeNode* root) { if(root==NULL) return NULL; TreeNode* temp=root->right; root->right=DFS(root->left); root->left=NULL; TreeNode* p=root; while(p->right!=NULL) p=p->right; p->right=DFS(temp); return root; }};
另外,还可以用非递归的方法修改指针,思想方法和递归一致。
class Solution {public: void flatten(TreeNode* root) { TreeNode* p=root; if(p==NULL) return; while(p!=NULL) { if(p->left!=NULL) { TreeNode* temp=p->right; p->right=p->left; p->left=NULL; TreeNode* q=p; while(q->right!=NULL) q=q->right; q->right=temp; } p=p->right; } }};
阅读全文
0 0
- LeetCode #114
- LeetCode 114 Combination Sum
- leetcode #114 in cpp
- leetCode练习(114)
- leetCode练习(114)
- [Leetcode] 99, 114, 117
- [LeetCode] 114: Surrounded Regions
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- 确保不是在栈区申请内存
- HDU
- 蓝桥杯 算法提高 欧拉函数
- C#学习问题一:使用GDI+画图类进行图形绘制
- SVM进阶问题
- LeetCode #114
- Python爬虫之urllib简单使用
- 实现10进制转换为2进制
- 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
- 移动架构08_单例模式
- LeetCode题解 第四周
- mysql优化-索引类型
- 2017/10/1 学习日记
- ffmpeg 实现对图片逐帧的处理