题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

方法1、中序遍历+全员入队
public class Solution {
    Queue<TreeNode>queue=new LinkedList<>();
    public TreeNode Convert(TreeNode pRootOfTree) {
        inOrder(pRootOfTree);
        TreeNode head=queue.poll();
        TreeNode cur=head;
        TreeNode pre=null;
        while(!queue.isEmpty()){
            pre=cur;
            cur=queue.poll();
            pre.right=cur;
            cur.left=pre;
        }
        return head;
    }
    public void inOrder(TreeNode cur){
        if(cur==null)
            return ;
        inOrder(cur.left);
        queue.offer(cur);
        inOrder(cur.right);
    }

}
方法2、中序遍历+递归
难点在于需要创建两个变量来记录链表的头和每个节点的父节点
public class Solution {
    TreeNode head=null;
    TreeNode pre=null;
    public TreeNode Convert(TreeNode root) {
        if(root==null)return null;
        Convert(root.left);
        if(pre==null){
            head=root;
            pre=root;
        }else{
            pre.right=root;
            root.left=pre;
            pre=root;
        }
        Convert(root.right);
        return head;
        
    }

}
知识点、递归到左下角的语句为pre==null保证了该节点是从根节点开始遍历的第一个节点,在中序遍历的情况下就为左下角节点
if(root==null)return null;
Convert(root.left);
if(pre==null){
    head=root;
    pre=root;
}




全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务