判斷是否爲二叉排序樹 平衡二叉樹

中序遍歷二叉排序樹必定是一個遞增序列spa

因此根據這一條 判斷便可code

int pre = -INF; bool check(Bitree T) { if(T == NULL) reutrn true; if(check(T->lchild) && T->data > pre) { pre = T->data; } else return false; return check(T->rchild); }

 

平衡二叉樹是在二叉排序樹的基礎上的保證每一個點的子樹高度差的絕對值小於等於1blog

 

這是改了一下王道上的代碼排序

並無實現判斷二叉排序樹..........直接判斷的平衡......why....it

bool check(Bitree T, int &h) { int hl, hr; //左右子樹的高度
    if(T == NULL) return true; if(T->lchild != NULL && T->rchild != NULL) { h = 0; return true; } bool b1 = check(T->lchild, hl); bool b2 = check(T->rchild, hr); h = max(hl, hr) + 1;    //h爲當前子樹的高度
    if(abs(hl - hr) >= 2) return false; return b1 && b2; }
相關文章
相關標籤/搜索