递归算法
int maxDepth(BiTree T){
if(t==NULL)
return 0;
return max(maxDepth(T->left),maxDepth(T->right))+1;
}
要求以 3 为根节点的二叉树的高度,就要求以 9 为根节点的左子树的高度和以 20 为根节点的右子树的高度。求出这两个子树的高度后,将高度为高的子树的高度+1 就是以 3 为根节点的二叉树的高度。
9 是叶子结点,高度为 1。
要求以 20 为根节点的子树的高度,就要求以 15 为根节点的左子树的高度和以 7 为根节点为右子树的高度。求出这两个子树的高度后,将高度为高的子树的高度+1 就是以 20 为根节点的二叉树的高度。
15 和 7 都是叶子结点,高度为 1。
以 20 为根节点的子树的高度是 2。
所以以 3 为根节点的二叉树的高度为 3。
二叉树的层序遍历二叉树的层序遍历-CSDN博客
int maxDepth(BiTree T){
if(T==NULL)
return 0;
int high=0;
LinkQueue Q;
InitQueue(Q);
BiTree p;
EnQueue(Q,T);
while(!isEmpty(Q)){
int Qsize=Q.size();
while(Qsize>0){
DeQueue(Q,p);
visit(p);
Qsize--;
if(p->left)
EnQueue(p->left);
if(p->right)
EnQueue(p->right);
}
high++;
}
return high;
}
3 入队,Qsize1
3 出队,Qsize0,9 和 20 入队
Qsize0, 跳出内层循环
high++,**high1**
Qsize2
9 出队,Qsize1,无子节点入队
20 出队,Qsize0,15 和 7 入队
Qsize0,跳出内层循环
high++,high==2
Qsize2
15 出队,Qsize1,无子节点入队
7 出队,Qsize0,无子节点入队
Qsize0,跳出内层循环
high++,high==3
跳出外层循环
return high;—return 3;