二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
要求不能创建任何新的结点,只能调整树中结点指针的指向。
注意:
需要返回双向链表最左侧的节点。
例如,输入下图中左边的二叉搜索树,则输出右边的排序双向链表。
递归
时间复杂度O(n)
class Solution {
TreeNode tree;
TreeNode begin;
public TreeNode convert(TreeNode root) {
if(root == null){
return null;
}
if(root.left != null){
convert(root.left);
}
if(tree == null){
tree = new TreeNode(root.val);
begin = tree;
}else{
TreeNode tr = new TreeNode(root.val);
tree.right = tr;
tr.left = tree;
tree = tree.right;
}
if(root.right != null){
convert(root.right);
}
return begin;
}
}