给定一棵用二叉链表表示的二叉树,其根指针为 root,试写出求二叉树的深度的法
时间: 2023-06-09 13:08:31 浏览: 69
解。
您好,感谢您的提问。为了求出二叉树的深度,可以采用递归方法进行求解。具体的实现方法如下所示:
```python
#定义一棵二叉树的节点类
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
#递归求解二叉树的深度
def maxDepth(root):
if not root: #如果根节点为空,则返回0
return 0
else:
leftDepth = maxDepth(root.left) #递归求解左子树的深度
rightDepth = maxDepth(root.right) #递归求解右子树的深度
return max(leftDepth, rightDepth) + 1 #返回左右子树深度的较大值加1
```
以上代码中,我们定义了一个节点类 `TreeNode`,用于表示二叉树中的每一个节点。接着,我们使用递归方法求解二叉树的深度,具体来说,如果根节点为空,则返回 0,否则递归求解左子树和右子树的深度,并返回左右子树深度的较大值加1。
希望这个代码对您有所帮助,如有其他问题,欢迎继续提问!
相关问题
给定一棵用二叉链表表示的二叉树,其根指针为 root,试写出求二叉树的深度的法。
您好,根据您的描述,您想问如何求二叉树的深度。下面是求二叉树深度的C++代码。请注意,此代码仅适用于用二叉链表表示的二叉树。
```
int getDepth(TreeNode* root) {
if(root == NULL) { // 当前节点为空,深度为0
return 0;
}
int leftDepth = getDepth(root->left); // 递归求左子树深度
int rightDepth = getDepth(root->right); // 递归求右子树深度
return max(leftDepth, rightDepth) + 1; // 返回左右子树深度的最大值加1
}
```
以上代码中,`TreeNode`是表示二叉树节点的结构体,包含左右两个指针和节点值等信息。函数`getDepth`首先判断当前节点是否为空,若为空,则深度为0。否则,分别递归求出左子树的深度和右子树的深度,并返回二者的最大值加1,即为整棵二叉树的深度。
希望能够帮到您,如有疑问请随时提出。
给定一棵用二叉链表表示的二叉树,其根指针为 root,试写出求二叉树结点的数的算法。
当您输入 "给定一棵用二叉链表表示的二叉树,其根指针为 root,试写出求二叉树结点的数的算法。" 时,我的ChitGPT AI将给予以下回答:
可以使用递归的方式来求解二叉树结点的数。具体地,对于一棵二叉树,其结点数等于其左子树的结点数加上右子树的结点数再加上1(根结点)。
因此,可以定义一个递归函数countNodes,以某个结点为根的子树作为参数,返回该子树中的结点数。具体实现方式如下:
int countNodes(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
return countNodes(root->left) + countNodes(root->right) + 1;
}
其中,当给出的子树为空时,其结点数为0;否则,使用递归计算其左子树和右子树的结点数,并相加1(根结点数),即可得到该子树的结点数。
希望以上回答能够帮助您。