C语言以树的形状输出一个二叉树用C语言生成一个满二叉树(最少三层),并以正金字塔的形状输出,第一行一个(根节点),的二行两个,最后一行都是叶子结点
时间: 2024-11-15 17:19:50 浏览: 31
在C语言中,我们可以使用递归结构来生成和打印一个满二叉树,通常也称为完全二叉树,其特点是除了最后一层外,所有层次的节点都尽可能地填充,并且从左到右顺序排列。这里是一个简单的示例,展示如何以金字塔形打印二叉树:
```c
#include <stdio.h>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 插入函数,构建满二叉树
TreeNode* insert(TreeNode* root, int val) {
if (!root) {
return (TreeNode*)malloc(sizeof(TreeNode));
}
if (val <= root->val) {
root->left = insert(root->left, val);
} else {
root->right = insert(root->right, val);
}
return root;
}
// 打印函数,以金字塔形式输出
void printPyramid(TreeNode* root) {
if (!root) return;
printPyramid(root->left); // 先处理左边
printf("%d ", root->val); // 输出当前节点
printPyramid(root->right); // 最后处理右边
}
int main() {
int levels = 3; // 指定层数
TreeNode* root = NULL;
for (int i = levels - 1; i >= 0; i--) { // 从最顶层开始
for (int j = 0; j < levels - i - 1; j++) { // 空格的数量随层级减少
printf(" ");
}
for (int k = 1; k <= (1 << i); k++) { // 根据满二叉树特性,每层有2^i个节点
root = insert(root, k);
}
printf("\n");
}
printPyramid(root); // 打印完整的树
return 0;
}
```
当你运行这个程序时,它会创建一个满二叉树,并按照给定的模式(金字塔形状)显示节点值。
阅读全文