当前位置: 首页 > 面试题库 >

手写代码:两个平衡二叉树合并是怎么做的

孟哲
2023-03-14
本文向大家介绍手写代码:两个平衡二叉树合并是怎么做的相关面试题,主要包含被问及手写代码:两个平衡二叉树合并是怎么做的时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

首先,将两棵树分别展开为有序链表

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;
}

 

 类似资料:
  • 我正在解决LeetCode问题110。平衡二叉树: 给定一棵二叉树,确定它是否是高度平衡的。 对于这个问题,高度平衡的二叉树定义为: 一种二叉树,其中每个节点的左右子树的高度相差不超过1。 我已经看到了这个问题的解决方案,包括这个: 我的问题是:为什么要添加此代码? 当我从代码中删除它时,它看起来工作得很好。但是,当测试用例为< code>[1,2,2,3,null,null,3,4,null,n

  • 本文向大家介绍手写代码:给一个二叉树,怎么得到这棵树的镜像相关面试题,主要包含被问及手写代码:给一个二叉树,怎么得到这棵树的镜像时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍怎么求一个二叉树的深度?手撕代码?相关面试题,主要包含被问及怎么求一个二叉树的深度?手撕代码?时的应答技巧和注意事项,需要的朋友参考一下 考察点:二叉树    

  • 主要内容:二叉排序树转化为平衡二叉树,构建平衡二叉树的代码实现,总结上一节介绍如何使用二叉排序树实现动态 查找表,本节介绍另外一种实现方式—— 平衡二叉树。 平衡二叉树,又称为  AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在二叉树的基础上,若树中每棵子树都满足其左子树和右子树的深度差都不超过 1,则这棵二叉树就是平衡二叉树。 图 1 平衡与不平衡的二叉树及结点的

  • NowCoder 题目描述 平衡二叉树左右子树高度差不超过 1。 解题思路 // java private boolean isBalanced = true; public boolean IsBalanced_Solution(TreeNode root) { height(root); return isBalanced; } private int height(Tre

  • 排序二叉树中存在一个问题就是可能会退化成一个链表,当只有左子树或者右子树有节点的时候,此时排序二叉树就像链表一样,但因为排序二叉树在插入查询的时候还要判断左右子树的问题,这样查询的效率反而变低,从而引出了平衡二叉树 平衡二叉树又称平衡搜索树(Self-balance Binary Search Tree)又称AVL树,同时保证了查询和添加的效率。首先平衡二叉树是一颗排序二叉树,且它是空树或者他的每