编写求二叉树高度的函数
时间: 2023-09-25 14:12:58 浏览: 67
好的,以下是求二叉树高度的函数的Python代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def get_height(root):
if not root:
return 0
left_height = get_height(root.left)
right_height = get_height(root.right)
return max(left_height, right_height) + 1
```
其中,`TreeNode`为二叉树节点的类定义,`get_height`为求二叉树高度的函数,`root`为根节点。函数的实现采用递归的方式,分别计算左子树和右子树的高度,取两者中的较大值并加上1即为整棵树的高度。如果根节点为空,则返回0。
相关问题
请用c语言编写一个求二叉树高度的算法
好的,以下是用C语言编写一个求二叉树高度的算法:
```C
#include <stdio.h>
#include <stdlib.h>
// 结构体定义
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 创建二叉树
Node* createTree() {
int data;
Node* root = NULL;
scanf("%d", &data);
if (data != -1) {
root = (Node*) malloc(sizeof(Node));
root->data = data;
root->left = createTree();
root->right = createTree();
}
return root;
}
// 递归求二叉树高度
int getHeight(Node* root) {
if (root == NULL) {
return 0;
} else {
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return (leftHeight > rightHeight) ? (leftHeight + 1) : (rightHeight + 1);
}
}
// 主函数
int main() {
Node* root = createTree();
printf("Height of tree is %d\n", getHeight(root));
return 0;
}
```
以上代码中,createTree函数可以通过输入数组递归创建一个二叉树,并返回根节点。getHeight函数用递归的方法计算整个二叉树的高度,其中参数root表示根节点。最后,我们在主函数中调用createTree函数和getHeight函数,并输出结果。
编写算法求二叉树的高度(需预先创建符合要求的二叉树)
以下是求二叉树高度的算法:
```python
# 定义二叉树节点
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 求二叉树高度的函数
def get_height(root):
if root is None:
return 0
left_height = get_height(root.left)
right_height = get_height(root.right)
return max(left_height, right_height) + 1
```
其中,`TreeNode` 是二叉树节点的定义,`get_height` 函数的参数为二叉树的根节点,返回二叉树的高度。
具体实现思路是,如果当前节点为空,则返回高度 0;否则,分别递归求解左右子树的高度,并返回左右子树高度的最大值加上 1。