1、前言
题目描述2、思路
这道题比较简单,直接采用中序遍历的思路遍历二叉搜索树即可。后续连接直接使用一个 pre 节点标定一个节点前面的节点,让他们互相连接。
3、代码
class Solution {
private Node pre = new Node();
/**
* 首先使用中序遍历遍历二叉搜索树,然后设置一个 head 作为 pre,当前访问的节点作为 head,
* 然后让他们相互连接,直到结束
*/
public Node treeToDoublyList(Node root) {
if(root == null){
return root;
}
Node head = pre;
dfs(root);
Node first = head.right;
pre.right = first;
first.left = pre;
return first;
}
private void dfs(Node root){
if(root == null){
return;
}
dfs(root.left);
pre.right = root;
root.left = pre;
pre = root;
dfs(root.right);
}
}
网友评论