栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【浅刷Java数据结构】二叉搜索树与双向链表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【浅刷Java数据结构】二叉搜索树与双向链表

题目链接: 二叉搜索树与双向链表

思路1:

搜索二叉树转换成有序双向链表 = 左子树构建得双向有序链表+根节点+右子树构建得双向有序链表

用图分析:

代码:

public class Solution {
    public TreeNode CreateList(TreeNode pCur){
        if(pCur==null){
            return null;
        }
        TreeNode leftTree = CreateList(pCur.left);//将左子树创建为双向链表
        TreeNode rightTree = CreateList(pCur.right);//将左子树创建为双向链表
        
        if(leftTree!=null){
            while(leftTree.right!=null){//遍历找到左子树的最右边结点
                leftTree=leftTree.right;
            }
            leftTree.right=pCur;
            pCur.left=leftTree;
        }
        if(rightTree!=null){
            while(rightTree.left!=null){//遍历找到右子树最左边的结点
                rightTree=rightTree.left;
            }
            pCur.right=rightTree;
            rightTree.left=pCur;
        }
        return pCur;
    }
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null){
            return null;
        }
        CreateList(pRootOfTree);
        TreeNode head=pRootOfTree;
        while(head.left!=null){
            head=head.left;
        }
        return head;
    }
}

在这里可以看到,并没有刻意去控制链表的头和尾的null,那是因为一棵用二叉搜索树创建的链表的头节点的left和尾节点的right自然而然是null。

思路2:

引入一个变量prev,用来记录pCur的前一个结点。
遍历的过程是中序遍历:pCur的顺序是中序遍历的顺序,prev的顺序也是中序遍历得顺序。

public class Solution {
    TreeNode prev=null;//prev指向pCur的前一个结点
    public void CreateList(TreeNode pCur){
        if(pCur==null){
            return;
        }
        CreateList(pCur.left);
        pCur.left=prev;
        if(prev!=null){
            prev.right=pCur;
        }
        prev=pCur;//让prev指向当前结点
        CreateList(pCur.right);
    }
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null){
            return null;
        }
        CreateList(pRootOfTree);
        TreeNode head=pRootOfTree;
        while(head.left!=null){
            head=head.left;
        }
        return head;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/933426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号