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 是樹中的節點數,
m是查詢次數。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給存儲庫
一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!以上是子樹刪除查詢後二元樹的高度的詳細內容。更多資訊請關注PHP中文網其他相關文章!