#include<stdio.h> #include<stdlib.h> typedef struct BinaryTreeNode { int data; struct BinaryTreeNode *Left; struct BinaryTreeNode *Right; }Node; //创建二叉树,顺序依次为中间节点->左子树->右子树 Node* createBinaryTree() { Node *p; int ch; printf("输入data"); scanf("%d",&ch); if(ch == 0) //如果到了叶子节点,接下来的左、右子树分别赋值为0 { p = NULL; } else { p = (Node*)malloc(sizeof(Node)); p->data = ch; p->Left = createBinaryTree(); //递归创建左子树 p->Right = createBinaryTree(); //递归创建右子树 } return p; } //先序遍历 void preOrderTraverse(Node* root) { if( root ) { printf("%d",root->data); preOrderTraverse(root->Left); preOrderTraverse(root->Right); } } //中序遍历 void inOrderTraverse(Node* root) { if( root ) { inOrderTraverse(root->Left); printf("%d",root->data); inOrderTraverse(root->Right); } } //后序遍历 void lastOrderTraverse(Node* root) { if( root ) { lastOrderTraverse(root->Left); lastOrderTraverse(root->Right); printf("%d",root->data); } } //二叉树节点总数目 int Nodenum(Node* root) { if(root == NULL) { return 0; } else { return 1+Nodenum(root->Left)+Nodenum(root->Right); } } //二叉树叶子节点数 int Leafnum(Node* root) { if(!root) { return 0; } else if( (root->Left == NULL) && (root->Right == NULL) ) { return 1; } else { return (Leafnum(root->Left) + Leafnum(root->Right)) ; } } int main() { int i; Node *root = NULL; root = createBinaryTree(); printf("二叉树建立成功"); printf("\n"); preOrderTraverse(root); printf("\n"); inOrderTraverse(root); printf("\n"); lastOrderTraverse(root); printf("\n"); i = Leafnum(root); printf("%d",i); printf("\n"); i = Nodenum(root); printf("%d",i); return 0; }
普通二叉树的建立
原创
©著作权归作者所有:来自51CTO博客作者闫宝通的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:二叉排序树创建(数组)
下一篇:二叉排序树的查找
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【数据结构】二叉树的存储结构
【数据结构】第五章——树与二叉树详细介绍二叉树的存储结构……
二叉树 数据结构 C语言 -
二叉树的建立
二叉树是数据结构中不可或缺的知识,在这里我稍做下复习,其实也是为了
子树 二叉树 #include -
二叉树的建立及线索二叉树的实现
二叉树的建立及线索二叉树
结点 二叉树 线索化 -
二叉树的直径【二叉树】
时间复杂度:空间复杂度:
python 复杂度 Code 二叉树 -
【二叉树】重建二叉树
题目输入某二叉树的前序遍历和中序遍历的结果请构建该二叉树并返回其根节点假设
swift 算法 二叉树 中序遍历 子树 -
【二叉树】验证二叉树
题目二叉树上有 n 个节点,按从 0 到 n - 1 编号其中节点 i 的两个子节点分别是 leftChild[i]
swift 二叉树 算法 子节点 数组 -
【二叉树】平衡二叉树
题目给你一个二叉树判断它是否是高度平衡的二叉树一棵高度平衡二叉树定义为:一
swift 算法 开发语言 ios objective-c -
【二叉树】二叉树的坡度
给定一个二叉树,计算整个树的`坡度`一个树的 `节点的坡度` 定义为,该节点 `左` 子树的节点之`和` 与 `右`
深度优先 算法 swift ios objective-c