對於乙個二叉樹資料結構,其核心操作為遍歷:
需要注意的是,對於二叉樹的前中後三種遍歷方式,他們所經過的路徑是一樣的,每個節點都相當於經過三次,只不過不同的遍歷方式,選擇列印這個節點的時機不同,而在程式中,我們可見的就是進入該節點時的壓棧,以及從左子樹返回時的出棧,從右子樹返回時如果不多進行壓棧操作,則就看不到該節點的第三次狀態,這也是後序非遞迴遍歷需要增加push操作的原因各種遍歷方法是樹操作的基礎,其他的操作可以看作是某種遍歷的變形,只是在訪問子樹的過程中增加了一些其他操作由於在進行其他樹操作時候往往是從根節點開始,因此相當於使用了二叉樹的前序遍歷。
二叉樹的題目,大部分從本質上來講考的還是遞迴,因此需要對遞迴有乙個到位的理解。對於樹的遞迴,遞迴思路都是從根節點到左子樹及右子樹的遞迴,其變化的主要在於遞迴的邊界條件、返回值以及返回值與上一層呼叫棧引數間的邏輯關係,理清了這些,樹的題目應該不是很難。
二叉搜尋樹是一種排序樹,左子樹都小於根節點,右子樹都大於根節點。涉及到的主要操作為查詢,插入,刪除。
搜尋樹的題型,碰到的還比較少:
判斷乙個序列是不是某顆二叉搜尋樹的後序序列。核心思想就是先找到根節點,然後在後序序列中找到比根節點大的序列和小的序列,這兩個序列不能出現交叉,否則就不能形成二叉搜尋樹。然後進行遞迴判斷。
首先平衡二叉樹是一種二叉搜尋樹,因此在進行操作的時候一定要確保其仍然保留二叉搜尋數的有序性質。
平衡二叉樹的操作主要還是插入序列後為了使之重新平衡做出的旋轉操作。其根據插入位置與平衡被破壞點的相對關係分為以下四種情況:
相關指標的理解
指標從來都是乙個難以消化的知識,你需要透過表象看到其本質,才會讓你加深對指標的認識。指標,顧名思義,這是乙個儲存某個變數位址的變數。該位址指向某個變數,就像指標一樣,所以這個變數叫做指標。接下來讓我們看看下面這些包含指標的傢伙到底是些什麼東西。我們只看這個名字,會發現其本質是乙個陣列,而指標看起來更...
GAN的相關理解
本文根據自己的理解對生成對抗神經網路gan進行解釋,適合初學者學習。生成對抗神經網路 generative adversarial networks 一種無監督學習模型,模型通過框架中至少兩個模型 生成模型 generative model 和判別模型 discriminative model 的互...
指標相關的理解
include using namespace std intmain include using namespace std intcal char str 當用函式傳遞陣列指標時就退化為指標 intcalcal char str intmain include using namespace s...