// 第一个节点的前驱节点是最后一个节点
// 最后一个节点的后继节点是第一个节点
// 树中节点左指针需要指向前驱节点,树中节点右指针需要指向后继节点
// 中序排序有序,二叉搜索树同样有序
class Solution {
Node first, pre;
public Node treeToDoublyList(Node root) {
if(root == null) return null;
dfs(root);
// 连接起来做个循环
pre.right = first;
first.left = pre;
return first;
}
public void dfs(Node root){
if(root==null) return;
dfs(root.left);
root.left = pre;
if(pre!=null) pre.right = root;
else first = root;
pre = root;
dfs(root.right);
}
}
剑指offer36.二叉搜索树与双向链表,简单易懂注释版0ms
最新推荐文章于 2025-12-05 14:45:56 发布
本文介绍了一种将二叉搜索树转换为双向循环链表的方法。通过递归地进行中序遍历,调整每个节点的左右指针,使它们分别指向前驱和后继节点,最终形成有序的双向链表。
172万+

被折叠的 条评论
为什么被折叠?



