《劍指offer》二叉樹的映象

2021-08-21 16:38:34 字數 586 閱讀 2713

操作給定的二叉樹,將其變換為源二叉樹的映象。

輸入描述:

二叉樹的映象定義:源二叉樹

8 / \

6 10

/ \ / \

5 7 9 11

映象二叉樹

8 / \

10 6

/ \ / \

11 9 7 5

注意,這道題還是遞迴,對某個結點,直接將結點的左右子樹交換(注意是樹結構交換而不是樹結點的值,不然會出現值換了,後續的結點沒換的尷尬情景),然後對新的左右子樹再做映象處理。

但null的結點和非null結點一樣可以交換,不要誤判null的邊界。

注意判斷子樹為空的if語句要加,遞迴函式本身就需要時間來執行。可以把這個情況想得極端一點,假設這個函式裡的操作都很耗時,那我們是多呼叫一次或者幾次這個函式耗費的時間長,還是用if判斷的時間長呢?很明顯用if來減少函式的呼叫是更好的選擇。

/**

public class treenode }*/

public

class

solution

}}

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 這道題目就是交換樹的左右節點之後,遞迴呼叫。不遞迴的方法我覺得可以考慮使用層次遍歷那樣的佇列式方法,不過太麻煩了吧。coding utf 8 class...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5交換左右節點,遍歷左節點,右節點,求映象 class treenode def init self,item self.val item self.lef...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。遞迴判斷是否為空 不為空交換左右子樹 左子樹呼叫 右子樹呼叫。兩種寫法 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class ...