题目
题解
大佬题解:剑指 Offer 36. 二叉搜索树与双向链表(中序遍历,清晰图解)
看到这道题,想到了用中序遍历、再重新构建新的节点然后串成双向链表、但题目要求只能在原二叉树上进行操作变成一个双向循环链表,这样自己就没想到怎么去解决了,看了大佬题解才知道用双指针的方法去解决。
class Solution {
Node head,pre;
public Node treeToDoublyList(Node root) {
if (root == null){
return null;
}
inorderTraversal(root);
head.left = pre;
pre.right = head;
return head;
}
public void inorderTraversal(Node cur){
if(cur == null){
return;
}
inorderTraversal(cur.left);
if (pre == null){
head = cur;
}else {
pre.right = cur;
}
cur.left = pre;
pre = cur;
inorderTraversal(cur.right);
}
}