中序遍歷二叉排序樹必定是一個遞增序列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; }