编写函数计算二叉树的深度。二叉树采用二叉链表存储结构
时间: 2024-01-23 18:40:55 浏览: 146
好的,可以使用递归实现二叉树的深度计算。具体的实现代码如下:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def tree_depth(root):
if not root:
return 0
left_depth = tree_depth(root.left)
right_depth = tree_depth(root.right)
return max(left_depth, right_depth) + 1
```
其中,Node类表示二叉树节点,val为节点的值,left和right分别表示左右子节点。tree_depth函数计算二叉树的深度,参数root为二叉树的根节点。如果二叉树为空,深度为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 是二叉树中的节点结构体,包括左右子节点指针以及存储的元素值。
希望以上回答可以对您有所帮助。
1.设二叉树采用二叉链表存储,编写函数,对二叉树中每个元素值为X的结点,删除以它为根的子树,并释放相应空间。 2.假设二叉树采用二叉链表存储结构,求二叉树b中结点值为x的结点的层次(或深度)
1. 要编写一个删除二叉树中所有值为 X 的节点的函数,首先需要遍历整个二叉链表树结构。这个过程可以递归地完成,从根节点开始搜索:
```python
def delete_nodes(root, value):
if not root:
return None
# 如果当前节点就是要删除的节点,替换为NULL
if root.value == value:
root = None
else:
# 递归处理左子树和右子树
root.left = delete_nodes(root.left, value)
root.right = delete_nodes(root.right, value)
return root
```
然后,对于释放空间的问题,由于二叉链表的节点通常包含指向前驱和后继节点的引用,所以在删除节点后,记得将它们的前驱或后继指向NULL,避免形成悬挂指针。
2. 求解二叉树中结点值为 x 的节点的层次,我们可以使用队列辅助的广度优先搜索(BFS)算法:
```python
def get_depth(node, target_value, current_level=0):
if not node:
return -1
if node.value == target_value:
return current_level
left_depth = get_depth(node.left, target_value, current_level + 1)
right_depth = get_depth(node.right, target_value, current_level + 1)
return max(left_depth, right_depth) if left_depth != -1 or right_depth != -1 else -1
# 使用时,传入二叉树的根节点和目标值即可
depth = get_depth(binary_tree_root, x)
```
阅读全文