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
Java代码:
public class Solution {
public TreeNode pre=null;
public void flatten(TreeNode root) {
if(root==null)return ;
flatten(root.right); //先flatten前面的节点
flatten(root.left); //再flatten后面的节点
root.right=pre; //接上当前节点
root.left=null;
pre=root;
}
}
时间复杂度:O(N)
空间复杂度:O(N)
思路分析:采用递归实现,递归函数的意义:在flatten好后面节点的基础之上,再flatten当前节点