📜  树的高度 - C++ (1)

📅  最后修改于: 2023-12-03 14:55:38.682000             🧑  作者: Mango

树的高度 - C++

树是一种非常常见的数据结构,它由多个节点组成,节点之间通过边相连。树的高度是指从根节点到最远叶子节点的边的数量,它能够提供有关树的结构信息。

树的定义

在 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