• 剑指Offer 36.二叉搜索树与双向链表 中序遍历


    题目

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。

    为了让您更好地理解问题,以下面的二叉搜索树为例:

    img

    我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。

    下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。

    img

    特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。

    **注意:**本题与主站 426 题相同:https://leetcode-cn.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/

    **注意:**此题对比原题有改动。

    Related Topics

    • 深度优先搜索
    • 二叉搜索树
    • 链表
    • 二叉树
    • 双向链表

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路

    使用中序遍历,最左边节点一定在开头,深度优先遍历从最左下节点开始

    定义一个pre记录前驱节点,如果pre == null ,那么到达最左下角节点,记录为head 头节点。如果 pre != null,pre 的后继节点为 cur(当前节点),cur 的前驱节点为 pre。

    中序遍历:

    void dfs(Node cur){
        if (cur == null) return;
        dfs(cur.left);
        dfs(cur);
        dfs(cur.right);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    题解

    class Solution {
        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 (pre != null) pre.right = cur;
            else head = cur;
            cur.left = pre;
            pre = cur;
            dfs(cur.right);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    React 入门实例教程
    微服务中间件
    多路波形发生器的控制
    Proof-of-Authentication,要啥PoX?
    WAS项目更新单个文件
    Vue后台管理系统项目(34)销售属性的添加操作
    玩转用户自定义函数UDF_大数据培训
    Python数据挖掘Pandas
    007-第一代软件需求整理
    计讯物联外贸公司--佰沃恩应邀出席第三届“嘉庚论坛”—科技创新推动经济高质量发展分论坛
  • 原文地址:https://blog.csdn.net/qq_52476654/article/details/126081654