Convert a BST to a sorted doubly-linked list in-place
![]()
after conversion: 1 = 3 = 4 = 6 = 7 = 8 = 10 = 13 = 14
public class Solution {
static Node lastNode = null;
public static void main(String[] args) {
Node n1 = new Node(7);
Node n2 = new Node(3);
Node n3 = new Node(10);
Node n4 = new Node(8);
Node n5 = new Node(20);
n1.left = n2;
n1.right = n3;
n3.left = n4;
n3.right = n5;
Node head = BSTtoList(n1);
while(head != null) {
System.out.println(head.value);
head = head.right;
}
}
public static Node BSTtoList(Node root) {
convert(root);
while (lastNode.left != null) {
lastNode = lastNode.left;
}
return lastNode;
}
public static void convert(Node current) {
if (current == null) return;
if (current.left != null)
convert(current.left);
current.left = lastNode;
if (lastNode != null) {
lastNode.right = current;
}
lastNode = current;
if (current.right != null)
convert(current.right);
}
}
class Node {
Node left;
Node right;
int value;
Node(int v) {
value = v;
}
}
blog.youkuaiyun.com/beiyetengqing
本文详细介绍了如何将二叉搜索树原地转换为有序双向链表的过程,通过递归方法实现节点间的连接,并最终返回链表的尾节点。
9104

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



