題目描述
輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。
題目鏈接:牛客網
解題思路
public class Main {
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static TreeNode pre = null;
public static TreeNode head = null;
public static void main(String[] args) {
TreeNode root = new TreeNode(2);
root.right = new TreeNode(3);
root.left = new TreeNode(1);
printTree(convert(root));
}
public static TreeNode convert(TreeNode root) {
inOrder(root);
return head;
}
public static void inOrder(TreeNode node) {
if (node == null) {
return;
}
inOrder(node.left);
node.left = pre;
if (pre != null) {
pre.right = node;
}
pre = node;
if (head == null) {
head = node;
}
inOrder(node.right);
}
private static void printTree(TreeNode head) {
while (head != null) {
System.out.print(head.val + "->");
head = head.right;
}
System.out.println("null");
}
}