摘要:前言的節點與其祖先之間的最大差值給定二叉樹的根節點,找出存在于不同節點和之間的最大值,其中,且是的祖先。提示樹中的節點數在到之間。
前言
Weekly Contest 132的 節點與其祖先之間的最大差值:
解題思路給定二叉樹的根節點 root,找出存在于不同節點 A 和 B 之間的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。
(如果 A 的任何子節點之一為 B,或者 A 的任何子節點是 B 的祖先,那么我們認為 A 是 B 的祖先)
示例:
輸入:[8,3,10,1,6,null,14,null,null,4,7,13] 輸出:7 解釋: 我們有大量的節點與其祖先的差值,其中一些如下: |8 - 3| = 5 |3 - 7| = 4 |8 - 1| = 7 |10 - 13| = 3 在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。提示:
樹中的節點數在 2 到 5000 之間。
每個節點的值介于 0 到 100000 之間。
本題需要將問題分解一下,首先先實現根節點與每個節點的差值的最大值的算法,然后只需要遍歷每個子樹即可。
實現代碼/** * 5030. 節點與其祖先之間的最大差值 * @param root * @return */ public int maxAncestorDiff(TreeNode root) { Queuequeue = new LinkedList<>(); queue.add(root); int max=0; while(!queue.isEmpty()){//層序遍歷 TreeNode node=queue.poll(); max=Math.max(max,getMaxDiffByRoot(node)); if(node.left!=null){ queue.add(node.left); } if(node.right!=null){ queue.add(node.right); } } return max; } /** * 獲取某個根節點下所有節點與根節點的差值的最大值 * 這里選擇使用層序遍歷 * @param root * @return */ private int getMaxDiffByRoot(TreeNode root){ Queue queue = new LinkedList<>(); queue.add(root); //根節點的值,用于比較 int rootValue=root.val; //最大差值 int max=0; while(!queue.isEmpty()){//層序遍歷每個節點 TreeNode node=queue.poll(); // 獲取最大值 max=Math.max(max,Math.abs(node.val-rootValue)); if(node.left!=null){ queue.add(node.left); } if(node.right!=null){ queue.add(node.right); } } return max; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77616.html
摘要:今天跟大家分享一下中一些比較重要和比較容易被忽略的東西,開始吧。當為時,塊級元素的寬度會填滿整個包含塊。也就是說上下外邊距的值也是以父元素的寬度為標準的。 今天跟大家分享一下CSS中一些比較重要和比較容易被忽略的東西,開始吧。 樣式優先級 當你在不同地方不同的選擇器中對同一個元素屬性添加了不同的樣式的時候,該如何判斷最后哪個樣式會作用到元素上呢?判斷的依據就是樣式的優先級。樣式優先...
摘要:的主要組件包含了一個全新的引擎,稱為量子,也稱為。這個新引擎集成了四種不同瀏覽器的最新創新技術,創造出一個全新的超級引擎。這可以發生在多個圖層上。最終,擁有最高特異性的規則會勝出。 原文:Inside a Super Fast CSS Engine: Quantum CSS(Aka Stylo), Lin Clark 注:原文發布于 2017 年 8 月,本文翻譯于 2018 年 4 ...
閱讀 3198·2023-04-26 01:30
閱讀 665·2021-11-08 13:15
閱讀 1774·2021-09-24 10:35
閱讀 998·2021-09-22 15:41
閱讀 1930·2019-08-30 15:44
閱讀 593·2019-08-30 13:22
閱讀 1004·2019-08-30 13:06
閱讀 1197·2019-08-29 13:22