零、题目
输入一棵二叉树的根结点,判断该树是不是平衡二叉树。
如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
一、理解题目
遇到题目时不要慌张,冷静审题,找到目的,理解正确再做题,不要靠臆想做题
预期:判断一个二叉树是否为平衡二叉树
how:怎样判断呢?其实题目已经给我们提示了,任意节点的左右子树的深度相差不超过1
关键字:树的深度
二、解析思路
这个题目就可以从计算树的深度入手
step1:计算树的左右子树的深度
step2:比较其深度是否超过1
step3:根据深度差获知是否是平衡二叉树
三、解题过程
方法1. 计算左右子树的深度
int CalcTreeLen(TreeNode * tree)
{
if(tree == NULL)
return 0;
return max(CalcTreeLen(tree->left), CalcTreeLen(tree->right))