//树的链式存储--二叉表示法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef struct _TreeNode{//数据域int data;//指针域struct _TreeNode * leftchild;//左孩子指针struct _TreeNode * rightchild;//右孩子指针
}TreeNode, *TreeNodePointer;/*
以上语法定义了两个类型
第一个是typedef struct _TreeNode TreeNode 树的节点类型
第二个是typedef struct _TreeNode * TreeNodePointer 树的指针类型定义了一个结构体
typedef struct _TreeNode{
int data;
struct _TreeNode * leftchild;
struct _TreeNode * rightchild;
};
重命名 typedef struct _TreeNode TreeNode
定义一个指针类型 typedef struct _TreeNode * TreeNodePointer
注意:struct _TreeNode *这才是指针类型,TreeNodePointer是类型的名字
*/void Test1(){//定义结构体对象
    TreeNode t1, t2, t3, t4, t5;//填充数据域t1.data = 1;t2.data = 2;t3.data = 3;t4.data = 4;t5.data = 5;//建立树之间的关系//t1是根节点  t2是t1的左孩子t1.leftchild = &t2;t1.rightchild = NULL;// t3是t2的左孩子t2.leftchild = &t3;t2.rightchild = NULL;// t4是t2的左孩子t3.leftchild = &t4;t3.rightchild = NULL;// t5是t4的左孩子t4.leftchild = &t5;t4.rightchild = NULL;//t5没有孩子节点t5.leftchild = NULL;t5.rightchild = NULL;
}void Test2(){//定义结构体对象TreeNodePointer t1 = NULL, t2 = NULL, t3 = NULL, t4 = NULL, t5 = NULL;t1 = (TreeNodePointer)malloc(sizeof(TreeNode));if (t1==NULL){printf("分配内存失败!");goto END;}//初始化数据memset(t1, 0, sizeof(TreeNode));t2 = (TreeNodePointer)malloc(sizeof(TreeNode));if (t2 == NULL){printf("分配内存失败!");goto END;}//初始化数据memset(t2, 0, sizeof(TreeNode));t3= (TreeNodePointer)malloc(sizeof(TreeNode));if (t3 == NULL){printf("分配内存失败!");goto END;}//初始化数据memset(t3, 0, sizeof(TreeNode));t4 = (TreeNodePointer)malloc(sizeof(TreeNode));if (t4 == NULL){printf("分配内存失败!");goto END;}//初始化数据memset(t4, 0, sizeof(TreeNode));t5 = (TreeNodePointer)malloc(sizeof(TreeNode));if (t5 == NULL){printf("分配内存失败!");goto END;}//初始化数据memset(t5, 0, sizeof(TreeNode));//填充数据域t1->data = 1;t2->data = 2;t3->data = 3;t4->data = 4;t5->data = 5;//建立树之间的关系//t1是根节点  t2是t1的左孩子t1->leftchild = t2;t1->rightchild = NULL;// t3是t2的左孩子t2->leftchild = t3;t2->rightchild = NULL;// t4是t2的左孩子t3->leftchild = t4;t3->rightchild = NULL;// t5是t4的左孩子t4->leftchild = t5;t4->rightchild = NULL;//t5没有孩子节点t5->leftchild = NULL;t5->rightchild = NULL;END:if (t1!=NULL){free(t1);t1 = NULL;}if (t2 != NULL){free(t2);t2 = NULL;}if (t3 != NULL){free(t3);t3 = NULL;}if (t4 != NULL){free(t4);t4 = NULL;}if (t5 != NULL){free(t5);t5 = NULL;}
}void main(){system("pause");
}

转载于:https://www.cnblogs.com/zhanggaofeng/p/5722578.html

数据结构 树的链式存储(二叉表示法)相关推荐

  1. 数据结构学习笔记——链式存储结构实现栈(链栈)

    目录 一.链栈的定义 二.链栈的初始化 三.判断链栈是否为空栈 四.进栈(插入操作) 五.出栈(删除操作) 六.读取链栈的栈顶元素 七.链栈的建立 八.链栈的遍历输出 链式存储结构实现栈完整代码 一个 ...

  2. 判断两棵树是否相等与使用二叉链表法建立二叉搜索树

    //判断两个二叉树是否相等 //提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等? //答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以. BOOL isEqualTree( ...

  3. php之二叉树,数据结构之二叉树——链式存储结构(php代码实现)

    /** * ClearBiTree() 清空二叉树 * CreateBiTree() 创建二叉树 * BiTreeEmpty() 判断二叉树是否为空 * BiTreeDepth() 返回二叉树的深度 ...

  4. 数据结构二叉树的链式存储

    typedef struct BiTNode{int data;struct BiTNode *lchild, *rchild; }BiTNode, *BiTree;//定义一棵空树 BiTree r ...

  5. 数据结构与算法——链式存储(链表)的插入及删除

    持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持 上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表. ...

  6. 二叉树的存储结构顺序存储和链式存储

    顺序存储 实现:将一棵二叉树按照当做一棵满二叉树进行编号(从上到下,从左到右),编号作为数组的下标,一次存放到二叉树的数据元素. 当一个二叉树不是完全二叉树,那么总会有一些位置没有元素,那么就将这些位 ...

  7. 二叉树的链式存储结构--二叉链表

    1 二叉树的链式存储结构 //二叉链表的结点结构定义typedef int TElemType; typedef struct BiTNode {TElemType data;struct BiTNo ...

  8. 从零开始学数据结构和算法(二)线性表的链式存储结构

    链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...

  9. 数据结构之线性表——(二、链式存储结构)[c语言]

    数据结构之线性表--(二.链式存储结构-单链表) 链式存储结构以及基本运算的实现 背景:由于线性表的存储特点是用物理上的相邻实现逻辑上的相邻,他要求用连续的存储单元顺序存储线性表中的各个元素,所以,对 ...

最新文章

  1. 记一次Quartz重复调度(任务重复执行)的问题排查
  2. 使用Node.JS监听文件夹变化
  3. 聚焦可信AI与产业应用,百度联合发起千言计划实现情感分析2.0升级
  4. ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)
  5. 网络原理(四)-----动态路由协议篇
  6. 使用JWT的Cloud Native应用程序
  7. ZZULIOJ 1060:逆序数字
  8. 匿名内部类 java 1614965228
  9. MyEclipse取消验证Js的两种方法
  10. [转载] 实训心得体会
  11. 【快代理API】设置IP白名单
  12. 【社会网络分析图】python实现
  13. Linux下的磁盘分区简介
  14. 腾讯2019年理财通用户突破两亿;浪潮云估值突破100亿元 | 美通企业日报
  15. UltraEdit注册机使用教程
  16. 2021物理化学实验4:液体饱和蒸气压的测定
  17. 如何将图片制作成画中画特效
  18. 立即注册 | 甲骨文云技术嘉年华重磅开启,全球云大会精彩再现!
  19. 基于JAVA干洗店订单管理系统设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  20. Hexagon SDK安装过程指导

热门文章

  1. r语言electricity数据集_R语言学习10-查看数据
  2. python【力扣LeetCode算法题库】18-四数之和
  3. 二分查找对应的二叉树的成功和失败ASL
  4. 解决ecilpse插件安装速度变得很慢
  5. php session不生效_php 验证session无效问题解决办法
  6. 黑马java教程是什么_Java教程:揭秘什么是面向接口编程
  7. spss相关性分析看结果_利用spss做Pearson相关性分析步骤详解
  8. java深拷贝如何执行_Java克隆执行深拷贝
  9. ubuntu libapache2-mod-php5,ubuntu安装apache2 mysql5 php5
  10. 影响网站权重的关键性因素有哪些?