static bool isBalance(BSTreeNode<T>* pbs) { if (pbs==NULL) return true; int dis = Depth(pbs->left) - Depth(pbs->right); if (dis>1 || dis<-1 ) return false; else return isBalance(pbs->left) && isBalance(pbs->right); }
extern int isBalance(TreeNode *N) { int left, right; if(N==NULL) return 0; else { left = recurseHeight(N->left,0,0); right = recurseHeight(N->right,0,0); if(abs(left-right)<=1 && isBalance(N->right)==0 && isBalance(N->left)==0) { /*determines if it is balanced*/ return 0; } else { return 1; } } }
int main(void) { printf("isBalance testing...\n"); TreeNode * root; printf("ans is %d.\n", isBalance(root)); return 0; }
//check whether the node(root) is //size-balanced //if yes, return 1, //otherwise, return 0 char Balance(NODE *r, char * name, double val){ if (r == NULL) { // r is the root of a subtree return 1; } if(r->nameVal.value == val){ if(strcmp(r->nameVal.name, name) > 0){ r->numOfLeft++; }else{ r->numOfRight++; } } else if(val < r->nameVal.value){ r->numOfLeft++; } else { r->numOfRight++; } return isBalance(r); }
extern int Balanced (Tree *T) { int balanced; balanced = isBalance(T->root); return balanced; }