二叉树转换双向循环链表

简介: 二叉树转换双向循环链表

BT and Double linked list

问题

将二叉树转换为双向循环列表

数据

Node* head 表示最终返回的结果

Node* pre 表示上一个处理节点

思路

利用中序遍历的思想,链接节点,并更新pre

实现

Node* head,Node* pre;
void dfs(Node* cur)
{
    if(cur == null) return;
    dfs(cur->left);
    /******走到最左节点******/
    if(pre == null) head = cur;
    else pre->right = cur;
    /******链接.更新******/
    cur->left = pre;
    pre = cur;
    dfs(cur->right);
}
Node* treeTodoubleList(Node* root)
{
    if(root == null) return null;
    dfs(root);
    head->left = pre;
    pre->right = head;
    return head;
}

总结自leetcode大佬 Krahets

目录
相关文章
|
11月前
|
存储
【LeetCode】236. 二叉树的最近公共祖先、 JZ36 二叉搜索树与双向链表
236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先 题目描述:
56 0
|
3月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
1月前
|
Python
【Leetcode刷题Python】114. 二叉树展开为链表
LeetCode上114号问题"二叉树展开为链表"的Python实现,通过先序遍历二叉树并调整节点的左右指针,将二叉树转换为先序遍历顺序的单链表。
21 3
【Leetcode刷题Python】114. 二叉树展开为链表
|
3月前
|
存储 算法
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
23 0
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
|
4月前
|
算法 Python Java
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
41 0
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
|
4月前
|
算法 Java C++
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
54 0
Java每日一练(20230424) 二叉树中序遍历、交换链表节点、不同子序列
|
4月前
|
算法 C++ Python
Python每日一练(20230423) 链表倒数结点、最小子串、二叉树层序遍历
Python每日一练(20230423) 链表倒数结点、最小子串、二叉树层序遍历
41 0
Python每日一练(20230423) 链表倒数结点、最小子串、二叉树层序遍历
|
4月前
|
Go Python 算法
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
762 0
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
|
11月前
|
机器学习/深度学习 存储
链表oj题 && 链表与LinkedList && 栈的概念 && 队列的概念 && 树和二叉树
链表oj题 && 链表与LinkedList && 栈的概念 && 队列的概念 && 树和二叉树
145 38
|
4月前
|
算法 JavaScript
JS算法-二叉树展开转为链表
JS算法-二叉树展开转为链表