平衡二叉树
Last updated
Last updated
问题简述
思路:树形DP
考虑对以 X 为头结点的树,为了确定其是否为平衡二叉树,需要从左右子树获取哪些信息?
根据定义,显然需要知道两个信息:
子树是否为平衡二叉树(is_balanced: bool
);
子树的高度(height: int
);
假设子树的这些信息已知,怎么求 X 节点的上述信息:
x_is_balanced = l.is_balanced and r.is_balanced and abs(l.height - r.height) <= 1
即左右子树都平衡,且高度差小于等于 1
x_height = max(l.height, r.height) + 1
对空节点,有: