非递归实现,且空间复杂度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(); } } }