题目
将一个二叉搜索树转换成循环双向链表
思路
二叉搜索树按中序遍历出就是升序序列,再标注一个前驱节点就可以进行链表的连接。
代码
class Node {
public int val
;
public Node left
;
public Node right
;
public Node() {}
public Node(int _val
) {
val
= _val
;
}
public Node(int _val
,Node _left
,Node _right
) {
val
= _val
;
left
= _left
;
right
= _right
;
}
}
Node pre
,head
;
public Node
treeToDoublyList(Node root
) {
if(root
==null
) return null
;
dfs(root
);
head
.left
= pre
;
pre
.right
= head
;
return head
;
}
public 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
);
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-24368.html