判断二叉树是否为平衡二叉树

来源:互联网 发布:tl wn725n mac驱动 编辑:程序博客网 时间:2024/05/01 11:20



struct tree {    void * data;    struct tree *left;    struct tree *right;};int tree_high(struct tree *t) {    int r = 0;    int l = 0;    if (t == NULL) {        return 0;    }    if (t->left) {        l = tree_high(t->left) + 1;    }    if (t->right) {        r  = tree_high(t->right) + 1;    }    return r > l ? r : l; } int _is_balance(struct tree * t, int *balance) {    int r = 0;    int l = 0;    if (t == NULL) {        return 0;    }    if (t->left) {        l = _is_balance(t->left, balance) + 1;        if (*balance == 0) return 0;    }    if (t->right) {        r  = _is_balance(t->right, balance) + 1;        if (*balance == 0)  return 0;     }    int c = l > r ? l - r : r - l;    if (c >= 2) {        *balance = 0;    }    return l > r ? l : r; } /** * return 1 is balance, 0 not balance*/ int is_balance (struct tree *t) {    int balance = 1;    _is_balance(t, &balance);    return balance; }





0 0
原创粉丝点击