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

2022-08-30 02:06:12 字數 959 閱讀 8251

問題(1)二叉樹的深度

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

問題(2)平衡二叉樹

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

問題(1)分析

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

問題(2)分析

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

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

問題(1)

public int treedepth(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 int getdepth(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,那麼它就是一棵平衡二叉...