劍指offer二叉樹的高度 遞迴流程, 很明白了

2021-10-11 13:29:05 字數 996 閱讀 4220

# 遍歷二叉樹有兩種 深度優先遍歷   層序優先遍歷

# 遞迴的實現呼叫自身的函式 都在快取中,還沒有執行 直到遞迴截至條件,從最後的函式進行執行

# 先進後出 就是棧的乙個規律,進行執行的, 進就是呼叫函式本身 ,出就是遞迴截止條件後,執行之前的函式功能

# 左子樹 深度 右子樹深度 ,最大值 +1

# 遞迴的順序方向 是入棧 ,開闢了快取空間, 是多個 呼叫函式本身(空間換時間的方法)

# 遞迴的逆向就是執行 出棧, 從遞迴的截止條件(初始位置) 開始向上執行(

# 呼叫函式(呼叫的是自己)

# .理解遞迴的時候不能一直往深處考慮,那樣不適合人類的思維,只需要思考最後該退出時要返回什麼,一般的情況下該返回什麼,寫**時明確了這兩個即可 (遞迴截止條件和 遞迴執行條件)

class solution:

def maxdepth(self, root: treenode) -> int:

if not root:

return 0 #遞迴到底的情況需要寫出來,這裡也是初始化條件, 程式從這裡向上執行

else:

return max(self.maxdepth(root.left),self.maxdepth(root.right))+1

框的位置  相當於遞迴的順序執行 是 入棧操作

藍色 是出棧執行, 遞迴截止 條件處 ( 同時也是程式初始執行結果) 開始執行 ,往上呼叫

最後返回樹的高度 3

劍指offer 對稱的二叉樹(遞迴)

題目描述 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。遞迴入口,被遍歷節點的左右節點 處理情況 左右只有乙個空 false 左右都不空 比較值 左右都空 true public class 對稱的二叉樹 public static v...

劍指offer 二叉樹 二叉樹搜尋樹

package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...

劍指offer 二叉樹 二叉樹的映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 51,交換左右子樹 2,遞迴交換左右子樹的左右子節點 package offertest title mirror description author 田...