二叉树的二叉链表存储结构的求深度算法
时间: 2023-06-03 17:07:13 浏览: 118
二叉树的二叉链表存储结构的求深度算法,可以采用递归的方式实现。具体代码如下:
```
int TreeDepth(BiTree T) {
if (T == NULL) {
return 0;
}
int left_depth = TreeDepth(T->lchild);
int right_depth = TreeDepth(T->rchild);
return left_depth > right_depth ? left_depth + 1 : right_depth + 1;
}
```
其中,BiTree是二叉树的指针类型,lchild和rchild分别表示左右孩子指针。算法的思想是:如果当前节点为空,则返回0;否则,递归求出左子树的深度和右子树的深度,然后取一个更大的数,再加1,即为当前节点的深度。
相关问题
二叉树的二叉链表存储结构的求深度非递归算法
答:可以使用栈来实现非递归算法。从根节点开始,每个节点先入栈,然后从左子树往下递归入栈,直到左子树为空。接着,出栈一个节点,判断其是否存在右子树,若存在,将右子树入栈并重复上述过程。每次出栈时记录当前深度,取最大深度即为二叉树的深度。
二叉树采用二叉链表存储,要求编写算法计算二叉树的高度(深度)
您好,针对您的问题,我可以给出以下算法来计算二叉树的高度:
1. 如果二叉树为空,则二叉树的高度为0
2. 如果二叉树不为空,则二叉树的高度为左右子树高度的最大值加1。
具体算法实现如下:
```
int getHeight(Node* root) {
if (root == NULL) {
return 0;
} else {
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return max(leftHeight, rightHeight) + 1;
}
}
```
其中, Node 是二叉树中的节点结构体,包括左右子节点指针以及存储的元素值。
希望以上回答可以对您有所帮助。
阅读全文