基础简单的数据结构-C语言-二叉树链表构造
来源:互联网 发布:saas软件销售模式 编辑:程序博客网 时间:2024/05/16 12:39
二叉树是树的一种,只因该树中规定结点至多有两个子结点,故称二叉树。对比与树,二叉树可以是一颗空树,而树必须要有一个根结点。
满二叉树:一颗树种所有的叶结点都在同一层,而其他非终结点(叶节点以外的结点)分度均为2
完全二叉树:去掉最后一层是一颗满二叉树,且最后一层的叶结点都靠左
下面给出二叉树的构建,这里的构建是照一颗二叉查找树的规则去构建,即左叶结点小于根结点,右结点不小于
根节点,这里还没有涉及到BST(二叉查找树)的插入删除等,只是简单的构建
-----------------------------------------------------------------------------------------------------------
#include<iostream>#include<stdio.h>#include<stdlib.h>//结构体链表的建立struct tree{struct tree * left;int date;struct tree * right;};typedef struct tree treenode;typedef struct tree * b_tree;b_tree insert(b_tree root,int node){ b_tree newnode; //为一个数据创建一个结点 b_tree currentnode;//最后数据插入的位置 b_tree parentnode;//保存最后插入位置的父结点 newnode=(b_tree)malloc(sizeof(treenode));//分配空间 newnode->date=node; newnode->left=NULL; newnode->right=NULL; if(root==NULL)//第一个结点的建立 return newnode; else { currentnode=root;//存储当前的结点,我们要插入的数据 while(currentnode!=NULL)//去寻找新的这个数据应该在哪里插入 { parentnode=currentnode;//寻找是需要保存最后插入位置的父结点 if(currentnode->date>node)//小于则往左走 currentnode=currentnode->left;// else currentnode=currentnode->right; } if(parentnode->date>node) parentnode->left=newnode; else parentnode->right=newnode;}return root;}b_tree create(int *data,int len){ int i; b_tree root=NULL; for(i=1;i<=len;i++) root=insert(root,data[i]); return root;}void display(b_tree root)//中序打印{ if(root!=NULL) { printf("%d",root->date); display(root->left); display(root->right); }}int main(){//测试int i,n;b_tree root=NULL;printf("how many sum:?\n");scanf("%d",&n);int node[n+1];for(int i=1;i<=n;i++) scanf("%d",&node[i]);root=create(node,n);display(root);printf("\n");}
0 0
- 基础简单的数据结构-C语言-二叉树链表构造
- 【数据结构】数据结构C语言的实现(简单二叉树)
- 基础简单的数据结构-C语言-二叉查找树数组模拟
- 基础简单的数据结构-C语言-动态链表
- [数据结构]C语言二叉树的实现
- 数据结构C语言二叉树的遍历
- C语言二叉树的数据结构实现
- [数据结构]二叉树遍历、求深度C语言的简单实现
- c语言构造简单的线性表
- c语言实现的简单二叉树
- 数据结构c语言基础
- C语言-数据结构-二叉树
- [数据结构]队列的C语言简单实现
- [数据结构]栈的C语言简单实现
- [数据结构]单链表C语言的简单实现
- 前序遍历和中序遍历构造二叉树----C语言数据结构
- 数据结构.二叉树的基本操作(C语言实现)
- 二叉树的操作 (数据结构c语言)
- html编码常见的有utf-8和gb2312编码等,应该如何判断选择?
- hdu5917——Wrestling Match(二分图染色)
- CentOS 7将网卡名称eno16777736改为eth0
- 解决:mysql导出SQL文件
- 史上最全常用正则表达式
- 基础简单的数据结构-C语言-二叉树链表构造
- 去除“Internet Explorer 已限制此网页运行脚本或Activex控件”
- vs 快捷键
- 后缀数组详解以及其用法,常用解决的问题类型
- 聚合和组合的区别
- 全球知名移动间谍软件FlexiSpy的分析(part1)
- (第二章)分治法
- spfa——vijos1089小胖抗日
- 坚强的迈出那一步