题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
AC代码
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.*;
public class Solution {
public TreeNode Convert(TreeNode node) {
TreeNode head=null;
TreeNode prev=null;
List<TreeNode> stk=new ArrayList<>();
while(node!=null||!stk.isEmpty()){
while(node!=null){
stk.add(node);
node=node.left;
}
node=stk.get(stk.size()-1);
stk.remove(stk.size()-1);
if(head!=null){
prev.right=node;
node.left=prev;
}else{
head=node;
}
prev=node;
node=node.right;
}
return head;
}
}