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

For example,
Given

```         1
/ \
2   5
/ \   \
3   4   6
```

The flattened tree should look like:

```   1
\
2
\
3
\
4
\
5
\
6```
Hints:

If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.

1. 把左子树的最右节点的right指针指向cur的右子树。

2. cur的right指针指向cur的左子树，cur的left指针指向null.

```     public void flatten(TreeNode root) {
TreeNode cur = root;
while(cur!=null) {
if(cur.left!=null) {
TreeNode leftRight = cur.left;
while(leftRight.right!=null)
leftRight = leftRight.right;
leftRight.right = cur.right;
cur.right = cur.left;
cur.left = null;
}
cur = cur.right;
}
}```

```     public void flatten(TreeNode root) {
Stack<TreeNode> st = new Stack<TreeNode>();
st.push(root);
if(root==null)
return;
while(!st.isEmpty())
{
TreeNode temp = st.pop();
if(temp.right!=null)
st.push(temp.right);
if(temp.left!=null)
st.push(temp.left);
temp.left=null;
if(!st.isEmpty())
temp.right = st.peek();
else
temp.right = null;
}
}```

## [Leetcode][JAVA] Flatten Binary Tree to Linked List的更多相关文章

1. LeetCode 114| Flatten Binary Tree to Linked List（二叉树转化成链表）

题目 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解析 通过递归实现:可以用先序遍历, ...

2. 【LeetCode】Flatten Binary Tree to Linked List

随笔一记,留做重温! Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-pl ...

3. leetcode dfs Flatten Binary Tree to Linked List

Flatten Binary Tree to Linked List Total Accepted: 25034 Total Submissions: 88947My Submissions Give ...

4. Java for LeetCode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ...

5. leetcode 114 Flatten Binary Tree to Linked List ----- java

Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...

6. 【leetcode】Flatten Binary Tree to Linked List （middle）

Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...

7. [leetcode]114. Flatten Binary Tree to Linked List将二叉树展成一个链表

Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 ...

8. [LeetCode] 114. Flatten Binary Tree to Linked List_Medium tag: DFS

Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 ...

9. [LeetCode 题解]: Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...

## 随机推荐

1. RSA加密,应用授权及MSSQL备份与还原

01.QBRSA加解密处理 --> a.利用 RSA密钥生成器生成密钥(e,n,d) [e,n]为私钥, [d,n]为公钥 b.正向加密:  用私钥加密,用公钥解密 c.反向加密:  用公钥加密 ...

2. 可拖动的DIV

在做WEB UI设计的时候,拖动某个HTML元素已经成为一种不能忽视的用户界面模式,比较典型的应用例子就是Dialog,一个元素是怎么实现拖动的呢?其实原理非常简单,要想实现首先得了解几个基本知识. ...

3. jsp考试的错题

(选择一项) A: B: C: D: 正确答案是 A,首先,session的出现确实是为了解决HTTP无法保持客户状态的特点:因此A选项正确:用户信息也是客户状态的一部分,所以由A可以看出B的说法就不 ...

4. 20145225 《Java程序设计》第2周学习总结

20145225<Java程序设计> 第2周学习总结 教材学习内容总结 3.1.1Java的类型 分为基本类型(Primitive type)和类类型(Class type) 基本类型: ...

5. 【实战】初识ListView及提高效率

简介: ListView是手机上最常用的控件之一,几乎所有的程序都会用到,手机屏幕空间有限,当需要显示大量数据的时候,就需要借助ListView来实现,允许用户通过手指上下滑动的方式将屏幕外的数据滚动 ...

6. 关于 app测试工具

1. 腾讯的GT 2. testin 云测 3. monkey的自动化测试 4. 纯手工的功能测试.

7. C# window service的创建

其实我也是第一次在博客园写博客,看到那些高手说自己要多动手写博客,于是乎自己也尝试尝试. 废话不多说.这几天在研究window service,通过查找各种大神写的博客,我终于成功的自己写出来了. 下 ...

8. SharePoint 学习记事（二）

买了一本<sharepoint2010开发高级编程> 据说评价也不高. 搜到如下文章,留着看看:http://book.douban.com/review/5673741/ http:// ...

9. 安装solaris_11.2与windows双系统（VM10模拟实现）（二）

下面我们在虚拟机下安装双系统 1.首先我们新建一个虚拟机 新建的时候一定要注意客户机操作系统应选择solaris,不然不行: 新建完成后我们先分两个分区,这里我先从U盘启动进去(也可以用xp/win7 ...

10. 图片裁剪：CropZoom插件

上传个人头像的功能:用户在上传自己的照片后,由于照片尺寸不符合网站的要求,要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像. 用户可以对上传的图片进行自由缩放.裁剪,使之符合彩信图片的大小. C ...