因为我们之前讲过了左旋转, 右旋转, 双旋转, 但是在实际编码中会有一个问题: 我们要确定LL型, LR型, RR型, RL型最小不平衡子树时需要通过求解最小不平衡子树根节点的左右子树高度差和最小不平衡的左(或右)子节点的左右子树的高度差来判断到底是那种类型的最小不平衡二叉树, 所以这里我们首要问题就是要求解对应结点的左右子树的高度差, 其实就是求树的高度后再作差
//返回以当前节点为根节点的树的高度
public int height(){return Math.max(left == null ? 0 : left.height(), right == null ? 0 : right.height()) + 1;
}
//返回左子树的高度
public int leftHeight(){if(left == null){//如果左子节点不存在, 那么就直接返回0即可return 0;}return left.height();
}//返回右子树的高度
public int rightHeight(){if(right == null){//如果右子节点不存在, 那么就直接返回0即可return 0;}return right.height();
}
上一篇:C++ 时间函数整理详解
下一篇:JS笔记-函数