📅  最后修改于: 2023-12-03 14:55:38.682000             🧑  作者: Mango
树是一种非常常见的数据结构,它由多个节点组成,节点之间通过边相连。树的高度是指从根节点到最远叶子节点的边的数量,它能够提供有关树的结构信息。
在 C++ 中,我们可以使用类来定义一个树的节点。每个节点包含一个值以及指向其子节点的指针。以下是一个简单的树节点类的示例:
class TreeNode {
public:
int value;
TreeNode* left;
TreeNode* right;
TreeNode(int val) {
value = val;
left = nullptr;
right = nullptr;
}
};
计算树的高度涉及到遍历树的所有节点,以便找到最长的路径。一种常见的方法是使用递归来计算树的高度。下面是一个递归函数的示例,用于计算一棵树的高度:
int getHeight(TreeNode* node) {
if (node == nullptr) {
return 0;
}
int leftHeight = getHeight(node->left);
int rightHeight = getHeight(node->right);
return max(leftHeight, rightHeight) + 1;
}
在上面的代码中,我们首先检查节点是否为 nullptr
。如果是 nullptr
,则返回高度 0
。否则,我们递归地计算左子树和右子树的高度,并取其中较大的一个。最后,返回较大的高度值加 1
。
下面是一个使用上述函数计算树的高度的示例:
int main() {
// 创建一个简单的树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 计算树的高度
int height = getHeight(root);
cout << "树的高度为: " << height << endl;
return 0;
}
这个示例中的树结构如下所示:
1
/ \
2 3
/ \
4 5
输出结果为:
树的高度为: 3
这表示树的高度为 3
,从根节点到最远叶子节点的边的数量为 3
。