用c++建立一棵二叉树(二叉链表)后,求树的高度以及叶子节点数并包含主函数,写一个完整的代码
时间: 2024-11-25 15:17:16 浏览: 140
在C++中,我们首先创建一个二叉链表节点结构`Node`,然后构建二叉树。为了求解树的高度和叶子节点数,我们需要实现相应的方法。下面是一个简单的示例:
```cpp
// 引用[1]定义二叉链表节点
struct Node {
int data;
Node* left;
Node* right;
};
// 主函数
int main() {
// 创建二叉树实例(这里仅示例一个简单的构造,实际应用可能更复杂)
Node* root = createBinaryTree(); // 定义一个创建树的函数
// 调试功能 - 计算节点数
int nodeCount = countNodes(root);
std::cout << "Number of nodes: " << nodeCount << std::endl;
// 调试功能 - 计算叶子数
int leafCount = countLeaves(root);
std::cout << "Number of leaves: " << leafCount << std::endl;
// 调试功能 - 计算树的高度
int height = getHeight(root);
std::cout << "Height of the tree: " << height << std::endl;
// 调试功能 - 计算宽度(假设宽度等于最深层的节点数)
int width = getWidth(root);
std::cout << "Width of the tree: " << width << std::endl;
// 清理资源(如果有)
destroyBinaryTree(root); // 定义一个销毁树的函数
return 0;
}
// 辅助函数:创建二叉树
Node* createBinaryTree() {
// 实现创建逻辑...
}
// 辅助函数:计数节点
int countNodes(Node* node) {
if (node == nullptr) return 0;
return 1 + countNodes(node->left) + countNodes(node->right);
}
// 辅助函数:计数叶子节点
int countLeaves(Node* node) {
if (node == nullptr || (node->left == nullptr && node->right == nullptr)) return 1;
return countLeaves(node->left) + countLeaves(node->right);
}
// 辅助函数:计算高度
int getHeight(Node* node) {
if (node == nullptr) return 0;
return 1 + std::max(getHeight(node->left), getHeight(node->right));
}
// 辅助函数:计算宽度
int getWidth(Node* node) {
if (node == nullptr) return 0;
return getWidth(node->left) + getWidth(node->right);
}
// 辅助函数:销毁二叉树
void destroyBinaryTree(Node* node) {
// 实现销毁逻辑...
}
```
请注意,上述代码仅为基本示例,实际的`createBinaryTree()`、`destroyBinaryTree()`和其他辅助函数需要根据具体的二叉树构建逻辑来编写。在实际应用中,这些函数通常会涉及到递归操作。
阅读全文
相关推荐















