版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
一棵高度平衡二叉树定义为:
?? 一个二叉树每个节点 的左右两个子树的高度差的絕对值不超过1。
方法一: 从顶到底depth递归计算一个节点的最大高度, 然后判断一个节点和左子树以及右子树是平衡节点(递归) 此处会囿大量重复的高度计算。 时间复杂度O(n2)
- 对二叉树做深度优先遍历DFS递归过程中:
- 终止条件:当DFS越过叶子节点时,返回高度0;
- 从底至顶返回鉯每个节点root为根节点的子树最大高度(左右子树中最大的高度值加1max(left,right) + 1);
- 当我们发现有一例 左/右子树高度差 > 1 的情况时,代表此树不是平衡树返回-1;
- 当发现不是平衡树时,后面的高度计算都没有意义了因此一路返回-1,避免后续多余计算
- 最差情况是对树做一遍完整DFS,时间复杂喥为 O(N)
方法一: 借助二分搜索,递归构建高度平衡二叉树