Given a binary tree, flatten it to a linked list in-place. (Medium)

For example,
Given

         1
/ \
2 5
/ \ \
3 4 6

The flattened tree should look like:

   1
\
2
\
3
\
4
\
5
\
6

分析:

将树的问题和链表插入问题结合。对于每个节点,寻找左子树的最右端,它应该是左子树前序遍历的最后一位,也就是生成链表中,右子树根节点的前一位。

按照链表插入的方法处理即可。

代码:

 /**
* 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:
void flatten(TreeNode* root) {
if (root == nullptr) {
return;
}
while (root != nullptr) {
if (root -> left != nullptr) {
TreeNode* temp = root -> left;
while (temp -> right != nullptr) {
temp = temp -> right;
}
temp -> right = root -> right;
root -> right = root -> left;
root -> left = nullptr;
}
root = root -> right;
}
}
};

最新文章

  1. 详解一个自己原创的正则匹配IP的表达式
  2. simple demo how to get the list of online users
  3. 创建对象为什么要 init?
  4. WEB前端性能优化:HTML,CSS,JS和服务器端优化
  5. 原生js实现addClass,removeClass,hasClass方法
  6. [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看
  7. 用ant打包可运行的jar文件 (将第三方jar包放进你自己的jar包)
  8. 蜻蜓FM 涉嫌诈骗投资人和广告主源代码剖析
  9. treeview调用数据库成树
  10. C#异步编程----Thread
  11. 用tornado实现图片标记
  12. 【Redis篇】Redis集群安装与初始
  13. Electron入门笔记(一)-自己快速搭建一个app demo
  14. python之组合与重用性
  15. 开始写博客,学习Linq(2)
  16. Luogu4980 【模板】Polya定理(Polya定理+欧拉函数)
  17. PHP 配置默认SSL CA证书
  18. 把 Reative Native 47 版本集成到已有的 Native iOS 工程中
  19. mysql 中显示 table 的基本信息
  20. August 13th 2017 Week 33rd Sunday

热门文章

  1. 关于Python3 打印中文乱码问题
  2. Layui 获取表单提交数据
  3. SSH免密登录设置
  4. TZ_16_Vue的v-for、v-if、v-show、v-bind、watch
  5. Node.js Error: Cannot find module express的解决办法(转载)
  6. (转载) poj1236 - Network of Schools
  7. golang之字符串
  8. HDU 4006优先队列
  9. HDU 1536 求解SG函数
  10. arcgis投影测试