2458。子树删除查询后二叉树的高度
难度:难
主题:数组、树、深度优先搜索、广度优先搜索、二叉树
给定一个具有 n 个节点的 二叉树 的根。每个节点都被分配一个从 1 到 n 的唯一值。您还会获得一个大小为 m 的数组查询。
您必须在树上执行 m 独立 查询,其中在第 ith 查询中执行以下操作:
返回大小为m的数组答案,其中answer[i]是执行第i第查询后树的高度。
注意:
示例1:
示例2:
约束:
提示:
解决方案:
该解决方案采用了两遍方法:
让我们用 PHP 实现这个解决方案:2458。子树删除查询后二叉树的高度
1。类定义和属性:
class Solution { private $valToMaxHeight = []; private $valToHeight = [];
2。主要功能:
function treeQueries($root, $queries) { ... ... ... /** * go to ./solution.php */ }
3。高度计算:
private function height($node) { ... ... ... /** * go to ./solution.php */ }
4。深度优先搜索最大高度:
private function dfs($node, $depth, $maxHeight) { ... ... ... /** * go to ./solution.php */ }
让我们逐步看一下示例。
输入示例:
// Tree Structure // 1 // / \ // 3 4 // / / \ // 2 6 5 // \ // 7 $root = [1, 3, 4, 2, null, 6, 5, null, null, null, null, null, 7]; $queries = [4];
初始高度计算:
高度计算后,valToHeight 将如下所示:
class Solution { private $valToMaxHeight = []; private $valToHeight = [];
最大高度的 DFS:
查询后结果数组:
所提供输入的结果将是:
function treeQueries($root, $queries) { ... ... ... /** * go to ./solution.php */ }
这种结构化方法确保我们在初始预处理后有效地计算必要的高度并在恒定时间内回答每个查询。整体复杂度为 O(n m),其中 n 是树中的节点数, m 是查询次数。
联系链接
如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!
如果您想要更多类似的有用内容,请随时关注我:
以上是子树删除查询后二叉树的高度的详细内容。更多信息请关注PHP中文网其他相关文章!