每日OJ —— 110. 平衡二叉树
- 1.题目:110. 平衡二叉树
- 2.解法
- 2.1.算法讲解
- 2.2.代码实现
- 2.3.提交通过展示
1.题目:110. 平衡二叉树
2.解法
2.1.算法讲解
1.这道题中的平衡二叉树的定义是:二叉树的每个节点的左右子树的高度差的绝对值不超过 111,则二叉树是平衡二叉树。根据定义,一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此可以使用递归的方式判断二叉树是不是平衡二叉树,递归的顺序可以是自顶向下或者自底向上。
2.算法:自顶向下递归
定义函数height
用于计算二叉树中的任意一个节点p
的高度:
有了计算节点高度的函数,即可判断二叉树是否平衡。具体做法类似于二叉树的前序遍历,即对于当前遍历到的节点,首先计算左右子树的高度,如果左右子树的高度差是否不超过1
,再分别递归地遍历左右子节点,并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。