LeetCode | 0236. 二叉树的最近公共祖先【Python】

2021-03-23
阅读 2 分钟
218
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

LeetCode | 面试题 17.12. BiNode【Python】

2021-03-23
阅读 1 分钟
158
二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。

LeetCode | 面试题53 - II. 0~n-1中缺失的数字【剑指 Offer】【Python】

2021-03-15
阅读 1 分钟
239
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

LeetCode | 面试题53 - I. 在排序数组中查找数字 I【剑指 Offer】【Python】

2021-03-15
阅读 1 分钟
169
问题力扣统计一个数字在排序数组中出现的次数。示例 1: {代码...} 示例 2: {代码...} 限制:0 <= 数组长度 <= 50000注意:本题与主站 34 题相同(仅返回值不同):[链接]思路二分查找 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 面试题11. 旋转数组的最小数字【剑指 Offer】【Python】

2021-03-15
阅读 1 分钟
180
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

LeetCode | 面试题 04.12. 求和路径【Python】

2021-03-15
阅读 1 分钟
170
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。

LeetCode | 面试题 04.08. 首个共同祖先【Python】

2021-03-14
阅读 2 分钟
168
问题力扣设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] {代码...} 示例 1: {代码...} 示例 2: {代码...} 说明: {代码...} 思路DFS {代码...} 代码Python3 {代码...} ...

LeetCode | 面试题 04.06. 后继者【Python】

2021-03-14
阅读 1 分钟
146
问题力扣设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1: {代码...} 示例 2: {代码...} 思路递归 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 面试题 04.05. 合法二叉搜索树【Python】

2021-03-13
阅读 1 分钟
170
问题力扣实现一个函数,检查一棵二叉树是否为二叉搜索树。示例 1: {代码...} 示例 2: {代码...} 思路递归 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 面试题 04.04. 检查平衡性【Python】

2021-03-13
阅读 1 分钟
164
问题力扣实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1: {代码...} 示例 2: {代码...} 思路递归 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 面试题 04.03. 特定深度节点链表【Python】

2021-03-13
阅读 2 分钟
149
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。

LeetCode | 面试题 04.02. 最小高度树【Python】

2021-03-13
阅读 1 分钟
158
问题力扣给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例: {代码...} 思路递归 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 面试题68 - II. 二叉树的最近公共祖先【剑指 Offer】【Python】

2021-03-01
阅读 2 分钟
193
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

LeetCode | 面试题68 - I. 二叉搜索树的最近公共祖先【剑指 Offer】【Python】

2021-03-01
阅读 2 分钟
150
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

LeetCode | 面试题37. 序列化二叉树【剑指 Offer】【Python】

2021-03-01
阅读 2 分钟
148
问题力扣请实现两个函数,分别用来序列化和反序列化二叉树。示例: {代码...} 注意:本题与主站 297 题相同:[链接]思路BFS代码Python3 {代码...} 链接GitHub面试题37. 序列化二叉树(层序遍历 BFS ,清晰图解)

LeetCode | 0671. 二叉树中第二小的节点【Python】

2021-02-27
阅读 2 分钟
271
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。

LeetCode | 0669. 修剪二叉搜索树【Python】

2021-02-27
阅读 2 分钟
142
给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。

LeetCode | 0662. 二叉树最大宽度【Python】

2021-02-27
阅读 2 分钟
149
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。

LeetCode | 0655. 输出二叉树【Python】

2021-02-27
阅读 2 分钟
191
问题力扣在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:行数 m 应当等于给定二叉树的高度。列数 n 应当总是奇数。根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下部分。...

LeetCode | 0653. 两数之和 IV - 输入 BST【Python】

2021-02-25
阅读 1 分钟
143
问题力扣给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1: {代码...} 案例 2: {代码...} 思路中序遍历 {代码...} 代码Python3 {代码...} 链接GitHub

LeetCode | 0652. 寻找重复的子树【Python】

2021-02-25
阅读 1 分钟
156
问题力扣给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: {代码...} 下面是两个重复的子树: {代码...} 和 {代码...} 因此,你需要以列表的形式返回上述重复子树的根结点。思路后序遍历代码Python3 {代...

LeetCode | 0623. 在二叉树中增加一行【Python】

2021-02-25
阅读 2 分钟
177
问题力扣给定一个二叉树,根节点为第1层,深度为 1。在其第 d 层追加一行值为 v 的节点。添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为 v 的左子树和右子树。将 N 原先的左子树,连接为新节点 v 的左子树;将 N 原先的右子树,连接为新节点 v 的右子树。如果 d 的值为 ...

LeetCode | 0606. 根据二叉树创建字符串【Python】

2021-02-24
阅读 2 分钟
201
问题力扣你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1: {代码...} 示例 2: {代码...} 思路DFS {代码...} Python3 代码 {代码...} GitHub 链接Python

LeetCode | 0590. N叉树的后序遍历【Python】

2021-01-25
阅读 2 分钟
152
Given an n-ary tree, return the postorder traversal of its nodes' values.

LeetCode | 0589. N叉树的前序遍历【Python】

2021-01-25
阅读 2 分钟
153
Given an n-ary tree, return the preorder traversal of its nodes' values.

LeetCode | 0563. 二叉树的坡度【Python】

2021-01-23
阅读 3 分钟
169
Given the root of a binary tree, return the sum of every tree node's tilt.

LeetCode | 0559. N 叉树的最大深度【Python】

2021-01-23
阅读 2 分钟
162
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

LeetCode | 0783. 二叉搜索树节点最小距离【Python】

2021-01-21
阅读 3 分钟
147
Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the values of any two different nodes in the tree.

LeetCode | 0530. 二叉搜索树的最小绝对差【Python】

2021-01-20
阅读 2 分钟
157
Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

LeetCode | 0515. 在每个树行中找最大值【Python】

2021-01-20
阅读 2 分钟
150
Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).