DFS序讲解
我們經常會遇到樹的問題,但樹是非線性的結構,操作起來始終還是麻煩,如果我們能把樹改造成線性結構,有什么方法?對,就是今天要講的DSF序;
dfs序呢,就是把一棵樹區間化,我們用dfs的方式將它區間化。
如圖:
dfs序就是:ABDDEEBCFHHFG
其實就是用dfs全部遍歷一遍,不過我們不能光遍歷還有動些小手腳,我們要在遍歷的同時記錄每個節點進棧與出棧的時間序列。
介紹兩個基本函數:in[x],out[x]
dfs從根節點開始,這倆函數就分別記錄每個節點x進入與離開的時間戳
還有num[x],表示第x個節點的編號
(具體情況根據,根據題目來寫)
num生成的就是一個新秩序,由每個節點進入關系而形成的
你仔細觀察會發現:
序根節點的進棧時間<子樹的dfs<根節點的出棧時間
這樣不就成一個區間了
in[x]~out[x]是x為根節點的子樹,劃分為一個區間
然后什么單點修改,區間查詢,莫隊都可以用在樹上,而且dfs序也是樹鏈剖分的前驅知識
光說可能不怎么懂,我去找一些題,做完再更新例題
總結
- 上一篇: 代悦个人资料简历 代悦简介
- 下一篇: 【每日一题】4月7日题目精讲 树