二叉搜索树与双向链表

82 阅读1分钟

二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。

要求不能创建任何新的结点,只能调整树中结点指针的指向。

注意:

需要返回双向链表最左侧的节点。
例如,输入下图中左边的二叉搜索树,则输出右边的排序双向链表。

在这里插入图片描述

递归

时间复杂度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;
    }
}