写一个递归函数计算二叉树高度
时间: 2023-06-01 13:03:34 浏览: 197
假设二叉树的节点结构如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
则递归函数可以如下实现:
```python
def height(root: TreeNode) -> int:
if not root:
return 0
left_height = height(root.left)
right_height = height(root.right)
return max(left_height, right_height) + 1
```
其中`height`函数的参数`root`表示根节点,返回值是树的高度。如果根节点为空,则返回0;否则,分别计算左右子树的高度,并取最大值,加1即为整棵树的高度。
相关问题
写一个递归函数计算二叉树的高度,只有一个根结点的二叉树高为1
要编写一个递归函数来计算二叉树的高度,我们可以考虑一个基本的原则:树的高度等于其最深叶子节点到根节点的距离。对于只包含一个根节点的情况,高度就是1。下面是一个简单的Python递归函数示例:
```python
class TreeNode:
def __init__(self, value=0, left=None, right=None):
self.value = value
self.left = left
self.right = right
def height(root):
# 如果根节点为空,树的高度为0
if root is None:
return 0
# 否则,树的高度等于左子树和右子树的最大高度加1
else:
left_height = height(root.left)
right_height = height(root.right)
# 返回两子树高度的最大值作为当前节点的高度
return max(left_height, right_height) + 1
# 创建一个只有一个根节点的二叉树实例
root = TreeNode()
# 然后调用height函数计算高度,应该返回1
print(height(root)) # 输出: 1
```
在这个例子中,`height` 函数会一直递归地检查每个子树的高度,直到遇到空节点,然后返回整个树的总高度。
二叉树的先序遍历递归算法计算二叉树的高度的代码C++
在C++中,我们可以使用递归的方式计算二叉树的高度。首先,我们需要定义一个节点结构体(TreeNode),然后实现一个辅助函数来计算高度,以及一个主函数来进行先序遍历。
```cpp
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 辅助函数:计算单个节点的高度
int heightRec(TreeNode* node) {
if (node == nullptr) return 0; // 空节点高度为0
return 1 + std::max(heightRec(node->left), heightRec(node->right));
}
// 先序遍历并计算高度的主函数
int calculateHeight(TreeNode* root) {
return heightRec(root);
}
```
这个`calculateHeight`函数接收二叉树的根节点作为输入,通过递归调用`heightRec`,每个节点都会返回它到最左下叶节点的最大距离加一(即高度)。如果节点为空,则认为高度为0。
阅读全文