劍指Offer對答如流系列 二叉樹的深度

2021-10-02 11:23:25 字數 1117 閱讀 7058

問題(1)二叉樹的深度

輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的/結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

問題(2)平衡二叉樹

輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。

問題(1)分析

第乙個問題對大家都小意思啦,樹的深度=max(左子樹深度,右子樹深度)+1,採用遞迴實現。

問題(2)分析

同樣需要計算樹的深度,樹的深度=max(左子樹深度,右子樹深度)+1。

在遍歷過程中,需要判斷左右子樹深度相差是否超過1,如果不平衡,則令樹的深度=-1。最終根據樹的深度是否等於-1來確定該樹是不是平衡樹。

問題(1)

public

inttreedepth

(node root)

int left=

treedepth

(root.left)

;int right=

treedepth

(root.right)

;return math.

max(left+

1,right+1)

;}

問題(2)

// 主程式

public

boolean

isbalanced_solution

(node root)

public

intgetdepth

(node root)

int left=

getdepth

(root.left);if

(left==-1

)int right=

getdepth

(root.right);if

(right==-1

)return math.

abs(left - right)

>1?

-1:1

+ math.

max(left, right)

;}

劍指Offer對答如流系列 醜數

我們把只包含質因子2 3和5的數稱作醜數 ugly number 求按從小到大的順序的第n個醜數。例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。判斷乙個數是不是醜數,最容易想到的方法就是讓這個數不斷除以2,3,5。對於第n個醜數,只要從1開始,依次判斷每個數是不...

劍指Offer對答如流系列 剪繩子

給你一根長度為n繩子,請把繩子剪成m段 m n都是整數,n 1並且m 1 每段的繩子的長度記為k 0 k 1 k m k 0 k 1 k m 可能的最大乘積是多少?例如當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到最大的乘積18。遇到問題,先分析問題,由分析的結果確定所運用的演...

劍指Offer對答如流系列 二叉樹的深度

問題 1 二叉樹的深度 輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的 結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。問題 2 平衡二叉樹 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉...