思路1:
非递归,
用层次遍历算法求二叉树的高度
关键:
1、last指针何时指向下一层
代码1:
int getBiTreeDepth(BTNode *t){
//1.创建队列 2.初始化工作=>根节点入队
BTNode *que[MAXSIZE];
int front=-1,rear=-1;//front和rear指针必须是负1,否则front和last永远都不能相遇
int level=0,last=0;//last指针始终指向当前层的最右结点
rear=(rear+1)%MAXSIZE;
que[rear]=t;
BTNode *p;
while(front!=rear){
front=(front+1)%MAXSIZE;
p=que[front];
if(p->lchild){
rear=(rear+1)%MAXSIZE;
que[rear]=p->lchild;
}
if(p->rchild){
rear=(rear+1)%MAXSIZE;
que[rear]=p->rchild;
}
if(front==last){//最右结点出队
level++;
last=rear;//当这一层结点都入队后,把rear赋值给last
}
}
return level;
}
思路2:
递归算法
代码2:
int getBiTreeDepth2(BT