博客
关于我
剑指 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/

    你可能感兴趣的文章
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>
    oracle中关于日期问题的汇总!
    查看>>
    Oracle中常用的语句
    查看>>
    oracle典型安装失败,安装oracle 10失败
    查看>>
    oracle系统 介绍,ORACLE数据库管理系统介绍
    查看>>
    oracle零碎要点---ip地址问题,服务问题,系统默认密码问题
    查看>>
    org.apache.poi.hssf.util.Region
    查看>>
    org/hibernate/validator/internal/engine
    查看>>
    orm总结
    查看>>
    paddle的两阶段基础算法基础
    查看>>
    SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
    查看>>
    pageHelper分页工具的使用
    查看>>
    Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
    查看>>
    Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现
    查看>>
    pandas DataFrame 中的自定义浮点格式
    查看>>
    Pandas 对数据框的布尔比较
    查看>>
    Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
    查看>>
    pandas 适用,但仅适用于满足条件的行
    查看>>