简单说下平衡二叉树如何判断一颗树是否处于平衡状态。
以当前根节点为参照,左右子树的深度差不超过1。
代码实现
//判断树是否为平衡二叉树(1:是 0:不是) //优化版本(不用遍历重复的结点) int IsBlancedTree_op(BTNode* root, int *pdepth) { if (root == NULL) { *pdepth = 0; return 1; } //按照后序遍历去判断,先判断左右子树,然后记录以当前结点为根树的深度 int left, right; if (IsBlancedTree_op(root->_left, &left) && IsBlancedTree_op(root->_right, &right)) { int gap = right - left; if (gap <= 1 && gap >= -1) { *pdepth = left>right ? left + 1 : right + 1; return 1; } } return 0; }

浙公网安备 33010602011771号