樹的直徑與樹的中心
概念:樹中的最長路。
求法:兩次深搜或DP。
1-兩次深搜:任找一點A為源點,深搜遍歷得到最遠點B,這個最遠點B必定在直徑中(感性想想,以A點為源點找到的最長路後面一段必定屬於樹的直徑的一部分);再以這個最遠點B為源點深搜遍歷求一個最長路,這個最長路即為樹的直徑。
2-DP:顯然最長路的兩個端點必然是葉子或者根節點。設f(i)表示到i最遠的葉子,g(i)表示到i次遠的葉子,則有
f(i)=max{f(j)}+1;
g(i)=second{f(j)}+1;
其中j必須是i的兒子,計算順序是自底向上。最終答案為
max{f(i)+g(i)}+1
2. 樹的中心
概念:樹的直徑的中點。
求法:有多種,如DP,廣搜,深搜等。
簡單的方法是,先求樹的直徑,再找到直徑中點即可。
相關推薦
樹的直徑與樹的中心
1. 樹的直徑概念:樹中的最長路。求法:兩次深搜或DP。1-兩次深搜:任找一點A為源點,深搜遍歷得到最遠點B,這個最遠點B必定在直徑中(感性想想,以A點為源點找到的最長路後面一段必定屬於樹的直徑的一部分);再以這個最遠點B為源點深搜遍歷求一個最長路,這個最長路即為樹的直
樹的直徑與樹的重心
遍歷 遞歸 處理 長度 樹的直徑 是否 col 節點 最小 樹的直徑 樹的直徑是指樹上的最長簡單路。 直徑的求法:兩遍搜索 任選一點w為起點,對樹進行搜索,找出離w最遠的點u。 以u為起點,再進行搜索,找出離u最遠的點v。 則u到v的路徑長度即為樹的直徑。 ------
BZOJ 2500 幸福的道路(race) 樹上直徑+平衡樹
pri 平衡樹 efi fin eal add -- span names structHeal { priority_queue<int> real; priority_queue<int> stack; void
【Python算法】圖與樹的實現
com 遍歷 alt self. als .com 字典 分享 def 鄰接列表及其類似結構 對於圖結構的實現來說,最直觀的方式之一就是使用鄰接列表。下面我們來實現一個最簡單的:假設現在我們有n個節點,編號分別為0,...,n-1。 然後,每個鄰接列表就是一個數
UESTC 1073 秋實大哥與線段樹 (線段樹)
put tom typedef ram std amp oid 的人 輸出 “學習本無底,前進莫徬徨。” 秋實大哥對一旁玩手機的學弟說道。 秋實大哥是一個愛學習的人,今天他剛剛學習了線段樹這個數據結構。 為了檢驗自己的掌握程度,秋實大哥給自己
決策樹模型與學習《一》
ini 相親 tor ext 測試的 select port RR rand html { } :root { } html { font-size: 14px; background-color: var(--bg-color); color: var(--tex
ST表與樹狀數組
read pac \n inf bsp ++ add tro pri ST表 st表可以解決區間最值的問題。可以做到O(nlogn)預處理 ,O(1)查詢,但是不支持修改。 st表的大概思路就是用st[i][j]來表示從i開始的2的j次方個樹中的最值,查詢時就從
線段樹與樹狀數組的綜合運用
兩個 遇到 省選 情況 莫隊 erl lib 答案 rmq 前言:線段樹樹狀數組是高級數據結構最基本的部分,數據結構又是省選最基本的部分,所以從他開始整理一下。 題目以洛谷和bz為基底 1.基礎運用 數據結構最基本的問題就是操作和詢問的問題, 修改可以分為點修改(包括點的函
Python算法教程第二章知識點:計時模塊、字典與散哈希表、圖與樹的實現、成員查詢、插入對象
復雜度 代碼段 程序 ans 數列 imp val 插入對象 string 本文目錄:一、計時模塊;二、字典與散哈希表;三、圖與樹的實現;四、成員查詢;五、插入對象</br>一、計時模塊(timeit、cProfile) import timeit timeit
[SDOI2013]直徑(樹的直徑)
str 學習 sin clas long long ont tro 給定 pac [SDOI2013]直徑 題目描述 小Q最近學習了一些圖論知識。根據課本,有如下定義。樹:無回路且連通的無向圖,每條邊都有正整數的權值來表示其長度。如果一棵樹有N個節點,可以證明其有且僅有N-
B-樹 動機與結構
總量 越來越大 b-樹 避免 dos 原理 存儲 組成 重要 Ps.我們遵循從感性到理性的認知順序來逐步探索B-樹的奧秘,之前經常說的value這裏用key(關鍵碼)指代,因為可能存的是字符串,說是value就不合適了。 (多圖預警!!!建議在WI-FI下觀看) 雖然迄今
淺談MySQL的B樹索引與索引優化
成本 情況 但是 數據行 eat bst tree bfs 優化 前言 MySQL的MyISAM、InnoDB引擎默認均使用B+樹索引(查詢時都顯示為“BTREE”),本文討論兩個問題: 為什麽MySQL等主流數據庫選擇B+樹的索引結構? 如何基於索引結構,理解常見的MyS
CF EDU 46E We Need More Bosses 邊雙縮點,樹直徑
題意:n點m條邊的無向圖,初始聯通,定義(s,t)的價值為:有多少條邊e,滿足刪除邊e後,s無法到達t ? 2<=n<=3e5, n-1<=m<=3e5. 問所有(s,t)中的最大價值為多少? 若(s,t) 為同一個環上的點,那麼顯然沒有滿足條件的e. 所以先邊雙聯通縮點
NOIP複賽複習(八)STL演算法與樹結構模板
STL演算法 STL 演算法是一些模板函式,提供了相當多的有用演算法和操作,從簡單如for_each(遍歷)到複雜如stable_sort(穩定排序),標頭檔案是:#include <algorithm>。常用STL 演算法庫包括:sort快速排序演算法、二分
資料結構——3.1樹與樹的表示
一、引言 層次結構舉例 家譜、城市(鄉鎮),檔案管理系統等 為什麼用層次結構呢? 分層次組織在管理上具有更高的效率 查詢 靜態查詢:對查詢的集合沒有插入和刪除操作,只有查詢 動態查詢:對查詢的集合除查詢外,還可能發生插入和刪除 二分查詢的啟示 例如11個元素的二
二叉樹認識與程式設計實現
歡迎瀏覽我的個人部落格 轉載請註明出處 https://pushy.site 1. 樹 我們都知道,樹是一種一對多的資料結構,它是由n個有限節點組成的一個具有層次關係的集合,它有如下的特點: 根節點是唯一的(老大當然是一個~); 每個節點都有零個或者必須多個子節點(丁克、獨生子、雙胞
裝置樹編譯與反彙編
轉載地址:https://blog.csdn.net/fight_onlyfor_you/article/details/74059029 1.編譯最新的核心 第一步 tar -xvf .........解壓核心 第二步 mak
基於python的 樹型資料結構,二叉樹使用與AVL樹使用
樹由n個節點組成的集合,可以遞迴定義資料結構,如果n=0就是空樹 如果n>那麼有樹 概念 根節點、葉子節點 樹的深度(高度) 樹的度 孩子節點、父節點 子樹 二叉樹-遍歷 # 樹型圖示意 E
03、位元組跳動-連結串列與樹
1、合併兩個有序連結串列 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode listNode = new ListNode(0); ListNode firstNode = listNode
2018 最新智慧樹 形勢與政策答案 單元測試答案題庫
形勢與政策單元測試答案課後習題答案形勢與政策智慧樹答案 一單元 1【多選題】(20分)下列幾項中,屬於中國經濟新常態主要特徵的是:( ABC ) A. 經濟從高速增長轉為中高速增長 B. 經濟結構不斷優化升級,第三產業消費需求逐步成為主體,城鄉區域差距逐步縮小,居民收入佔比上升,發展成果惠及