非递归实现,且空间复杂度O(n):
class Solution {
public void flatten(TreeNode root) {
LinkedList<TreeNode> sta=new LinkedList<>();
TreeNode p=root;
TreeNode pre=null;
while(p!=null||!sta.isEmpty()){
while(p!=null){
sta.add(p.right);//可能会压入空节点
if(pre!=null){
pre.left=null;
pre.right=p;
}
pre=p;
p=p.left;
}
p=sta.removeLast();
}
}
}