問題(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,那麼它就是一棵平衡二叉...