classSolution{publicTreeNodeincreasingBST(TreeNode root){TreeNode pre =null, cur = root, first =null;Stack<TreeNode> stack =newStack<>();while(null!= cur ||!stack.isEmpty()){while(null!= cur){
stack.push(cur);
cur = cur.left;}
cur = stack.pop();if(null== pre)
first = cur;else
pre.right = cur;
pre = cur;
cur.left =null;
cur = cur.right;}return first;}}
题目链接思路本题提示了用中序遍历,但是就算不提示我们也应该知道,二叉搜索树的中序遍历结果就是一个单调递增的数列~观察中序遍历过程可以发现,我们想要实现展平,需要有两个操作,首先要改变遍历过程的前驱节点pre,让pre.right = cur,这样大的结点就在小结点的右侧,与此同时还要让cur.left=null,确保没有环的存在有两个细节需要注意我们要保存第一个遍历到的结点并返回,因为这是最小的结点,也是结果的头部最开始的时候cur是null,这是在循环中需要额外判断的一点~class S