跳至主要內容
968, 监控二叉树

一、题目描述

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象

计算监控树的所有节点所需的最小摄像头数量。

示例 1

输入: root = [0, 0, null, 0, 0]
输出: 1
解释: 如图所示,一台摄像头足以监控所有节点。

示例 2

输入: root = [0, 0, null, 0, null, 0, null, null, 0]
输出: 2
解释: 需要至少两个摄像头来监视树的所有节点。上图显示了摄像头放置的有效位置之一。


Mike大约 4 分钟greedyhardbinary treedepth first searchdynamic programming
332, 重新安排行程

一、题目描述

给你一份航线列表tickets,其中tickets[i] = [fromi, toi]表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。

所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从JFK开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。

  • 例如,行程["JFK", "LGA"]["JFK", "LGB"]相比就更小,排序更靠前。

Mike大约 3 分钟backtrackingmediumdepth first searchgraphbacktracking
559, N叉树的最大深度

一、题目描述

给定一个N叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

N叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

示例 1

输入: root = [1, null, 3, 2, 4, null, 5, 6]
输出: 3

示例 2

输入: root = [1, null, 2, 3, 4, 5, null, null, 6, 7, null, 8, null, 9, 10, null, null, 11, null, 12, null, 13, null, null, 14]
输出: 3


Mike大约 3 分钟binary treeeasytreedepth first searchbreadth first search
572, 另一棵树的子树

一、题目描述

给你两棵二叉树rootsubRoot。检验root中是否包含和subRoot具有相同结构和节点值的子树。如果存在则返回true;否则返回false

二叉树tree的一棵子树包括tree的某个节点和这个节点的所有后代节点。tree也可以看做它自身的一棵子树。

示例 1

输入: root = [3, 4, 5, 1, 2], subRoot = [4, 1, 2]
输出: true


Mike大约 4 分钟binary treeeasybinary treedepth first searchstring matchinghash function
100, 相同的树

一、题目描述

给你两棵二叉树的根节点pq,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1

输入: p = [1, 2, 3], q = [1, 2, 3]
输出: true

示例 2

输入: p = [1, 2], q = [1, null, 2]
输出: false

示例 3

输入: p = [1, 2, 1], q = [1, 1, 2]
输出: false


Mike大约 2 分钟binary treeeasybinary treedepth first searchbreadth first search
669, 修剪二叉搜索树

一、题目描述

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

所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

示例 1

输入: root = [1, 0, 2], low = 1, high = 2
输出: [1, null, 2]


Mike大约 2 分钟binary treemediumbinary treebinary search treedepth first search
235, 二叉搜索树的最近公共祖先

一、题目描述

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:"对于有根树T的两个结点pq,最近公共祖先表示为一个结点x,满足xpq的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。"


Mike大约 4 分钟binary treemediumtreebinary treebinary search treedepth first search
236, 二叉树的最近公共祖先

一、题目描述

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中关于公共祖先的定义为:"对于有根树T的两个节点pq,最近公共祖先表示为一个节点x,满足xpq的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。"


Mike大约 3 分钟binary treemediumbinary treedepth first search
538, 把二叉搜索树转换为累加树

一、题目描述

给出二叉搜索树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点node的新值等于原树中大于或等于node.val的值之和。

提醒一下,二叉搜索树满足下列约束条件:

  • 节点的左子树仅包含键小于节点键的节点。
  • 节点的右子树仅包含键大于节点键的节点。
  • 左右子树也必须是二叉搜索树。

Mike大约 3 分钟binary treemediumbinary treedepth first searchbinary search tree
501, 二叉搜索树中的众数

一、题目描述

给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回BST中的所有众数(即出现频率最高的元素)。

如果树中有不止一个众数,可以按任意顺序返回。

假定BST满足如下定义:


Mike大约 6 分钟binary treeeasybinary treedepth first searchbinary search tree
2
3
4