
二叉树
文章平均质量分 72
二叉树练习
厚积薄发ض
当你运行错误时,不如调试一下,当你等待老师的答案时,不如自己百度一下
展开
-
297. 二叉树的序列化与反序列化
难度困难序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。root = []原创 2023-01-18 10:30:55 · 619 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表
难度中等619输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作。原创 2023-01-17 11:06:10 · 434 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
难度中等给出二叉树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点node的新值等于原树中大于或等于node.val的值之和。本题和 1038:相同[1,null,1][3,3,2][7,9,4,10]0104-104104。原创 2023-01-17 08:44:13 · 362 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树
链接:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/solution/jian-dan-di-gui-bi-xu-miao-dong-by-sweetiee/二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。商业转载请联系作者获得授权,非商业转载请注明出处。[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。排列,请你将其转换为一棵。作者:sweetiee。原创 2023-01-15 18:42:53 · 440 阅读 · 0 评论 -
669. 修剪二叉搜索树
难度中等给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在中。修剪树改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。原创 2023-01-15 17:09:03 · 486 阅读 · 0 评论 -
701. 二叉搜索树中的插入操作
难度中等给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据,新值和原始二叉搜索树中的任意节点值都不同。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回。另一个满足题目要求可以通过的树是:[0, 104]Node.valval。原创 2023-01-15 10:34:40 · 608 阅读 · 0 评论 -
450. 删除二叉搜索树中的节点
难度中等1037给定一个二叉搜索树的根节点和一个值,删除二叉搜索树中的对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。另一个正确答案是 [5,2,6,null,4,null,7]。二叉树不包含值为 0 的节点[][0, 104]root要求算法时间复杂度为 O(h),h 为树的高度。原创 2023-01-15 10:20:33 · 757 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
难度中等给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]6节点2和节点8的最近公共祖先是6。2节点2和节点4的最近公共祖先是2, 因为根据定义最近公共祖先节点可以为节点本身。原创 2023-01-14 19:21:42 · 667 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
难度中等2095给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(3节点5和节点1的最近公共祖先是节点3。5节点5和节点4的最近公共祖先是节点5。因为根据定义最近公共祖先节点可以为节点本身。1[2, 105]Node.val互不相同p!= qpq。原创 2023-01-14 18:49:01 · 635 阅读 · 0 评论 -
501. 二叉搜索树中的众数
难度简单给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回 BST 中的所有(即,出现频率最高的元素)。如果树中有不止一个众数,可以按返回。[2]root = [0][0][1, 104]你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)原创 2023-01-14 17:15:39 · 528 阅读 · 0 评论 -
863. 二叉树中所有距离为 K 的结点
其实不知道什么是图也无所谓.你想一想我们既然要找到一个节点距离为k的节点,有可能这个节点在他上面的那条路线,也有可能是在他下面的路线,对于下面的路线很好说,关键对于二叉树而言只能往下走,所以就需要建立一张。对于上面的过程我使用队列来进行模拟也就是广度优先搜索,由于遍历过的节点不能在往队列里面放入了,所以还要加一个HashSet.所求结点为与目标结点(值为 5)距离为 2 的结点,值分别为 7,4,以及 1。对于5这个节点距离为k的节点为 1,7,4 这三个节点.的所有结点的值的列表。原创 2022-10-23 00:10:57 · 488 阅读 · 0 评论 -
530.二叉搜索树的最小绝对差
难度简单415给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。11。原创 2023-01-14 10:30:43 · 153 阅读 · 0 评论 -
98. 验证二叉搜索树
难度中等给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。truefalse根节点的值是 5 ,但是右子节点的值是 4。[1, 104]原创 2023-01-14 10:20:16 · 760 阅读 · 0 评论 -
958. 二叉树的完全性检验
难度中等给定一个二叉树的root,确定它是否是一个完全二叉树。在一个中,除了最后一个关卡外,所有关卡都是完全被填满的,并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含1到2h节点之间的最后一级h。true最后一层前的每一层都是满的(即,结点值为 {1} 和 {2,3} 的两层),且最后一层中的所有结点({4,5,6})都尽可能地向左。false值为 7 的结点没有尽可能靠向左侧。[1, 100]原创 2023-01-14 09:37:05 · 702 阅读 · 0 评论 -
662. 二叉树最大宽度
难度中等530给你一棵二叉树的根节点root,返回树的。树的是所有层中最大的。每一层的被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的null节点,这些null节点也计入长度。题目数据保证答案将会在带符号整数范围内。4最大宽度出现在树的第 3 层,宽度为 4 (5,3,null,9)。7最大宽度出现在树的第 4 层,宽度为 7 (6,null,null,null,null,null,7)。2。原创 2023-01-14 09:07:42 · 1490 阅读 · 0 评论 -
114. 二叉树展开为链表
给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。原创 2023-01-14 00:08:17 · 493 阅读 · 0 评论