题目:
class Solution {
public:
Node* head=nullptr;
Node* pre=nullptr;
void traversal(Node* cur){ //二叉搜索树中序遍历的顺序就是构建双向链表的顺序
if(!cur) return;
traversal(cur->left);
if(pre){ //若前置节点存在,则与当前节点建立双向链表关系
pre->right=cur;
cur->left=pre;
}
else{ //若不存在前置节点,说明该节点为头结点
head = cur;
}
pre = cur; //将当前节点设置为前置节点
traversal(cur->right);
}
Node* treeToDoublyList(Node* root) {
if(!root) return root;
traversal(root);
head->left = pre; //最后要将头尾节点建立循环链表关系。pre递归到最后指向最后一个节点。
pre->right = head;
return head; //返回的是头结点
}
};
作者:林小鹿
链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/solutions/896127/tu-wen-bing-mao-zui-tong-su-yi-dong-de-t-0adg/
来源:力扣(LeetCode)
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具