二叉树的结构:
typedef struct BTNode
{
ElemType data;
struct BTNode *lchild, *rchild;
} BTNode;
递归算法求二叉树的深度depth:
这个递归算法求二叉树的深度其实和遍历二叉树的后序遍历算法差不多。
int BTNodeDepth(BTNode *b)
{
int lchildDepth, rchildDepth;
if (b == NULL) return 0;
else {
lchildDepth = BTNodeDepth(b->lchild);//求左子树的高度为lchildDepth
rchildDepth = BTNodeDepth(b->rchild);//求右子树的高度为rchildDepth
return (lchildDepht > rchildDepth) ? (lchildDepth + 1) : (rchildDepth + 1);//取大者
}
}
非递归算法求二叉树的深度:
其实非递归算法求二叉树的深度就是使用二叉树的层次遍历的算法。
int BTNodeDepth(BTNode *b)
{
BTNode *p = NULL, queue[MaxSize];
int front, rear;
front = rear = -1;
int level = 1;
int last = front;
while (front != rear)
{
p = queue[++front];
if (l->lchild)
queue[rear++] = p->lchild;
if (l->rchild)
queue[rear++] = p->rchild;
if (last == front)
{
level++;
last = rear;
}
}
return level;
}
本文介绍了两种计算二叉树深度的方法:递归算法与非递归算法。递归算法通过比较左右子树高度来确定整棵树的高度;非递归算法则采用层次遍历的方式实现。
1254

被折叠的 条评论
为什么被折叠?



