二叉樹刷題總結

2021-10-25 16:06:08 字數 1565 閱讀 9375

1.樹相關的問題一般都是可以使用遞迴進行求解的,同時記住乙個思路就是首先是明確當前根節點需要做什麼,然後依次遞迴去左右子樹做什麼即可!一定要明白的是當前根節點做什麼也等同於當前只有乙個節點之後的時候!

2.一般題目中可能有兩種型別,一種是單純的遍歷其中的樹節點去完成一些操作,另外一種是去修改對應樹的結構,則一般是直接在原先的樹的基礎上進行修改。然後返回這樣的時候就需要明白當前的一些修改細節和對應操作!但是總的思想不改變。

3.一些題目的問題中對應的可能是單個指標沒法完成問題的處理的,是需要加入另外的指標進行處理,將函式的操作變成兩個指標一起,然後同時來完成處理,使用雙指標的方式來完成處理。

4.無論是直接遍歷問題還是需要建立一顆新的二叉樹的問題,首先都是明確當前的根節點需要做什麼,然後再次去完成建立與遍歷操作,建立根節點之後,那麼就應該遞迴的去建立根節點的左子樹和右子樹,遍歷樹的時候當遍歷對應的根節點後完成了對應的操作之後就應該明白直接去繼續遍歷對應的左右子樹即可!

5.重構一棵樹的時候,首先是完成對應的根節點的建立,建立之後然後再次建立左右子樹!邏輯上也是類似於對應的樹的遍歷方式

二叉樹的一些題目解法總結!在二叉樹的時候最重要的是完成對應的框架的總結,我還是比較蠢,到處結合學習,不斷學習還是停留在不入門階段,想通過這些來大概總結一下,不知道是否可以完成一定的提高!

leetcode:226 翻轉二叉樹

};首先完成當前節點的左右節點的交換,然後遞迴交換對應的左右節點的子樹的節點即可。就是等同於先序遍歷的方式實現的。

另外的一些題目中對應的層次遍歷的方式是非常好用的,實現的時候是可以很好的解決問題的,在實現的時候需要把握好是否可以使用層次遍歷完成解決問題。

對稱二叉樹的實現:

題目大意為:

解決方法:首先判斷當前節點是否滿足對應的堆成性質,如果滿足那麼當前傳入的兩個節點必須要麼同時為 null , 要麼同時都不是 null 的性質,然後遞迴求解後續的節點是否滿足,然後就必須要求當前的節點的值相同的,而且對應的左右子樹的也是相等的才可以。

return a-

>val == b -

> val &&

dfs(a-

>left, b-

>left)

&&dfs

(a->right, b-

>right)

;

1325 刪除等於給定值的葉子節

二叉樹刷題系列( )

本篇文章leetcode題目刷二叉樹的題關鍵在於框架,本質上我們得摸清楚遍歷的情況。在做二叉樹的時候,重點考慮兩個方面。第一,以什麼順序進行遍歷,無非就是前序 後序 中序 層序次序上的變種。對於遞迴函式的呼叫,我們嚴格按照函式給出定義去構建。不需要每次過分糾結在一層層遞迴中,把自己搞暈。因此,遞迴框...

牛客刷題二叉樹之對稱二叉樹

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。用兩種方式,遞迴和非遞迴 一 遞迴方式 struct treenode class solution bool issymmetricalcore treenode left,treenod...

刷題找工作(二叉樹)

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。還原二叉樹 看解題 public class solution public treenode dfs int pre,int in...