前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二叉搜索树转双向链表

二叉搜索树转双向链表

作者头像
名字是乱打的
发布2022-12-13 13:34:10
2610
发布2022-12-13 13:34:10
举报
文章被收录于专栏:软件工程

思路:

  1. 明确Convert函数的功能。 输入:输入一个二叉搜索树的根节点。 过程:将其转化为一个有序的双向链表。 输出:返回该链表的头节点。
  2. 明确成员变量pLast的功能。 pLast用于记录当前链表的末尾节点。
  3. 明确递归过程。 递归的过程就相当于按照中序遍历,将整个树分解成了无数的小树,然后将他们分别转化成了一小段一小段的双向链表。再利用pLast记录总的链表的末尾,然后将这些小段链表一个接一个地加到末尾。
代码语言:javascript
复制
  /**
     * 已排链表的最后一个结点
     */
    private TreeNode lastNode=null;
 
 
    public TreeNode Convert(TreeNode pRootOfTree) {
        if (pRootOfTree==null){
            return null;
        }
 
        //获取其左子树双向链表的头结点
        TreeNode head = Convert(pRootOfTree.left);
 
        // 如果左子树为空,那么根节点root为此时双向链表的头节点
        if (head==null){
            head=pRootOfTree;
        }
 
        //连接当前结点和之前的链表
        pRootOfTree.left=lastNode;
        if (lastNode!=null) {
            lastNode.right=pRootOfTree;
        }
         
        //更新最后一个结点
        lastNode=pRootOfTree;
 
         
        //安排右节点
        Convert(pRootOfTree.right);
 
        return  head;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档