创建一棵二叉树并求它的高度。
时间: 2023-06-14 10:02:47 浏览: 48
好的,下面是 Python 代码实现:
```python
# 定义二叉树节点类
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 定义求二叉树高度的函数
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
# 输出二叉树高度
print(get_height(root))
```
这里创建了一棵二叉树,然后定义了一个 `get_height()` 函数,通过递归的方式求出二叉树的高度。最后输出了二叉树的高度。
相关问题
c语言实现创建一棵二叉树并求它的高度
下面是使用 C 语言实现创建一棵二叉树并求它的高度的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct Node {
int data; // 数据
struct Node *left; // 左子树
struct Node *right; // 右子树
} Node;
// 创建二叉树
Node *createBinTree() {
int data;
printf("请输入节点的值(-1表示空节点):");
scanf("%d", &data);
if (data == -1) {
return NULL;
}
Node *node = (Node *)malloc(sizeof(Node));
node->data = data;
node->left = createBinTree();
node->right = createBinTree();
return node;
}
// 求二叉树高度
int getHeight(Node *root) {
if (root == NULL) {
return 0;
}
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1;
}
int main() {
Node *root = createBinTree();
int height = getHeight(root);
printf("二叉树的高度为:%d\n", height);
return 0;
}
```
在示例代码中,我们定义了一个二叉树结构体 `Node`,其中包含了数据、左子树和右子树三个属性。使用递归的方式创建二叉树,当输入值为 -1 时表示空节点。然后使用递归的方式求出二叉树的高度。
注意:在使用完二叉树后,需要释放二叉树的内存,避免内存泄漏。
(1)求二叉树高度 用二叉链表创建一棵二叉树并利用递归算法求它的高度。
二叉树的高度可以通过递归求解。对于一棵二叉树,如果它是空树,则高度为0;否则,它的高度等于左右子树高度的较大值加1。具体实现可以参考下面的代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def tree_height(root):
if not root:
return 0
left_height = tree_height(root.left)
right_height = tree_height(root.right)
return max(left_height, right_height) + 1
```
其中,`TreeNode`表示二叉树节点的类,`tree_height`函数接受一个二叉树的根节点作为参数,返回二叉树的高度。在函数中,先判断当前节点是否为空,如果为空,则返回0;否则,分别递归求解左子树和右子树的高度,并返回左右子树高度的较大值加1。
例如,对于下面这棵二叉树:
```
1
/ \
2 3
/ \
4 5
```
可以通过以下代码计算它的高度:
```python
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.right.left = TreeNode(4)
root.right.right = TreeNode(5)
print(tree_height(root)) # 输出:3
```
因为这棵二叉树的高度为3,所以函数返回值为3。