文章
77
粉丝
9
获赞
2
访问
7.6k
1)下标从1开始,第i个结点的左结点为2i,右结点为2i+1,按照此规律,通过树的前序遍历,判断左结点是否小于当前结点,右结点是否大于当前结点;碰到-1直接跳过并返回该层递归,碰到不满足判断的结点直接返回false;如果遍历完都没有返回false则最终函数返回true
2)
bool isRight=false;
bool Function(SqBiTree T) {
isRight = false;
InOrder(T, 0);
return isRight;
}
void InOrder(SqBiTree T, int index) {
if (index>=T.ElemNum || T[index] == -1) return;
if (2*index+1<T.ElemNum && T[2*index+1]!=-1 && T[2*index+1]>T[index]) {
isRight= false;
return;
}
if (2*index+2<T.ElemNum && T[2*index+2]!=-1 && T[2*index+2]<T[index]) {
isRight= false;
return;
}
InOrder(T, 2*index+1);
InOrder(T, 2*index+2);
}
登录后发布评论
暂无评论,来抢沙发