手写代码:两个平衡二叉树合并是怎么做的
参考回答:
public TreeNode prev = null;
public void BSTtoLinkedList(TreeNode root) {
if (root == null) return;
BSTtoLinkedList(root.left);
if (prev != null) {
prev.right = root;
prev.left = null;
}
prev = root;
BSTtoLinkedList(root.right);
} 然后将两个有序链表合并
public TreeNode MergeTwoLinkedList(TreeNode n1, TreeNode n2) {
TreeNode head = new TreeNode();
while (n1 != null && n2 != null) {
if (n1.val < n2.val) {
head.right = n1;
n1 = n1.right;
} else {
head.right = n2;
n2= n2.right;
}
head = head.right;
}
if (n1 != null) {
head.right = n1;
head = head.right;
}
if (n2 != null) {
head.right = n2;
head = head.right;
}
return head.right;
}