博客
关于我
剑指 Offer 36 二叉搜索树与双向链表
阅读量:324 次
发布时间:2019-03-03

本文共 1171 字,大约阅读时间需要 3 分钟。

将二叉搜索树转换为循环双向链表

问题描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。目标是通过就地操作完成转换,使树中的节点左指针指向前驱节点,右指针指向后继节点,并返回链表的第一个节点指针。

转换过程:

  • 初始检查: 如果输入的根节点为空,直接返回空节点。
  • 深度优先遍历: 使用递归的深度优先搜索遍历树,维护一个前驱指针。
  • 初始化头节点: 遍历过程中,当遇到第一个节点时,设置为链表的头节点。
  • 建立双向链表: 在返回时,调整节点的左指针和右指针,使其指向前驱和后继节点,形成一个循环链表。
  • 返回头节点: 最终返回链表的第一个节点指针。
  • 代码逻辑:

    public class lab36midium {    Node pre, head;    public Node treeToDoublyList(Node root) {        if (root == null) {            return null;        }        dfs(root);        head.left = pre;        pre.right = head;        return head;    }    void dfs(Node cur) {        if (cur == null) {            return;        }        dfs(cur.left);        if (head == null) {            head = cur;        }        if (pre != null) {            pre.right = cur;        }        cur.left = pre;        pre = cur;        dfs(cur.right);    }}public class Node {    public int val;    public Node left;    public Node right;    public Node() {}    public Node(int _val) {        val = _val;    }    public Node(int _val, Node _left, Node _right) {        val = _val;        left = _left;        right = _right;    }}

    返回值:函数treeToDoublyList返回链表的第一个节点指针,即排序后的循环双向链表的头节点。

    转载地址:http://bkbq.baihongyu.com/

    你可能感兴趣的文章
    Pandas 中文官档 ~ 基础用法4
    查看>>
    pandas 中的 for 循环真的很糟糕吗?我什么时候应该关心?
    查看>>
    Pandas 中的多索引旋转
    查看>>
    Pandas 中的日期范围
    查看>>
    pandas 中的时间序列箱线图
    查看>>
    Pandas 使用指南
    查看>>
    pandas 分组并使用最小值更新
    查看>>
    pandas 叶上的热图
    查看>>
    pandas 均值(mean), 均值填充NA(fill_na)
    查看>>
    Pandas 对数据框的布尔比较
    查看>>
    Pandas 将多个数据帧与时间戳索引对齐
    查看>>
    pandas 将通话数据分割为15分钟的间隔
    查看>>
    pandas 找到局部最大值和最小值
    查看>>
    Pandas 按年份分组,按销售列排名,在具有重复数据的数据框中
    查看>>
    pandas 按日期和年份分组,并汇总金额
    查看>>
    pandas 数据帧到PostgreSQL表中使用的是没有SQLAlChemy的心理复制2吗?
    查看>>
    pandas 数据帧多行查询
    查看>>
    Pandas 数据框:使用线性插值重新采样
    查看>>
    pandas 数据框将 INT64 列转换为布尔值
    查看>>
    pandas 数据框将列类型转换为字符串或分类
    查看>>