剣指offerシリーズ-面接問題-面接問題55-II.バランスツリー(python)
3947 ワード
文書ディレクトリ 1. タイトル 2. 解題構想 2.0再帰 3. コード実装 3.0再帰 4. まとめ 5. 参考文献 1.テーマ
ツリーのルートノードを入力し、ツリーがバランスツリーであるかどうかを判断します.あるツリーの任意のノードの左右のサブツリーの深さの差が1を超えない場合は、バランスのとれたツリーです.
2.問題の解き方
詳細は試験問題55-II.へいこうツリー
2.0再帰
木全体がバランスツリーであれば,各サブツリーがバランスツリーであり,再帰が利用できることは明らかである.
3.コード実装
3.0再帰
4.まとめ
二叉木にとって、再帰のほうがいいです.難しいのは反復の書き方です.私はできません.
5.参考文献
[1]剣指offer叢書[2]剣指Offer-名企業面接官精講典型プログラミング問題[3]面接問題55-II.へいこうツリー
ツリーのルートノードを入力し、ツリーがバランスツリーであるかどうかを判断します.あるツリーの任意のノードの左右のサブツリーの深さの差が1を超えない場合は、バランスのとれたツリーです.
2.問題の解き方
詳細は試験問題55-II.へいこうツリー
2.0再帰
木全体がバランスツリーであれば,各サブツリーがバランスツリーであり,再帰が利用できることは明らかである.
3.コード実装
3.0再帰
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
"""
,
"""
def recur(root):
if not root: return 0, True #
l, l_bal = recur(root.left) #
r, r_bal = recur(root.right) #
depth = l+1 if l > r else r+1 #
bal = l-r <= 1 if l > r else r-l <= 1
return depth, bal and l_bal and r_bal # , ,
_, flag = recur(root)
return flag
4.まとめ
二叉木にとって、再帰のほうがいいです.難しいのは反復の書き方です.私はできません.
5.参考文献
[1]剣指offer叢書[2]剣指Offer-名企業面接官精講典型プログラミング問題[3]面接問題55-II.へいこうツリー