二叉树链表的结构声明:

struct  tree

{

int data;

struct tree *left;

stryct tree *right;

};

typedef struct tree treenode;

typedef  treenode *btree;

二叉树链表结构表示法

#include"iostream"
using namespace std;

struct tree //二叉树结构声明
{
int data;
struct tree *left;
struct tree *right;

};
typedef struct tree treenode;
typedef treenode *btree;
/*----插入二叉树的结点-------*/

btree insertnode(btree root,int value)
{
btree newnode; //树根指针
btree current; //目前树结点指针
btree back; //父结点指针

/*-----创建结点内存----*/
newnode=(btree)malloc(sizeof(treenode));
/*-------初始化-----*/
newnode->data=value;
newnode->left=NULL;
newnode->right=NULL;

if(root == NULL) //是否为根结点
{
return newnode;
}
else
{
current =root; //保留目前树指针
while(current!=NULL)
{
back=current;
if(current->data>value)
current =current->left;
else
current=current->right;
}
if(back->data>value)
back->left=newnode;
else
back->right=newnode;

}
return root;

}
/*----创建二叉树---*/
btree createbtree( int *data,int len)
{

btree root=NULL;
int i;

for(i=0;i<len;i++)
root=insertnode(root,data[i]);
return root;
}
/*-------儿二叉树的输出-------*/
void printbtree(btree root)
{
btree ptr;
ptr=root->left;
printf("输出左子树:\n");
while(ptr!=NULL)
{
printf("[%2d]\n",ptr->data);
ptr=ptr->left;
}
ptr=root->right;
printf("输出右子树:\n");
while(ptr!=NULL)
{
printf("[%2d]\n",ptr->data);
ptr=ptr->right;
}

}
/*------链表二叉树---------*/
int main()
{
btree root =NULL;
int data[10]={5,6,4,8,2,3,7,1,9};
root=createbtree(data,9);

printf("树的结点内容:\n");
printbtree(root);

}

转载于:https://www.cnblogs.com/FCWORLD/archive/2010/11/21/1883472.html

二叉树链表结构表示法相关推荐

  1. 按广义表表示二叉树结构生成二叉树链表的算法

    用广义表表示二叉树结构如下: (A (B (,D (E,E),C)) 算法如下: #include <stdio.h> #include <stdlib.h>// 定义节点 t ...

  2. 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算

    1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R ...

  3. 树的3种常用链表结构

    树的3种常用链表结构 双亲表示法 typedef struct{elemType data;int parent; }TNode; typedef struct{TNode T[100];int r, ...

  4. 【C】二叉树--顺序结构(详解堆的实现,topK排序、堆排)、和链式结构(链式结构的遍历、链式结构常见递归操作以及练习题)

    本章我们将引入树的概念并详细介绍二叉树.我们会在介绍顺序二叉树基础上,进一步介绍堆以及堆的实现,并以此为依据详解topK排序.堆排等问题:然后我们会介绍链式二叉树的实现以及各种操作.最后,我们也会给出 ...

  5. C语言哈希表的简单实现——数组+链表(拉链法)

    C语言哈希表的简单实现--数组+链表(拉链法) 1.哈希表简介 哈希表详细介绍可以参考这篇文章 2.哈希表拉链法实现 2.1完全由本人思路实现,如有错误,欢迎批评指正 哈希声明文件hash.h /* ...

  6. 单链表建立(头插法,头插法,用数组),求长,插入,删除,输出,释放(递归释放和循环释放),归并(递增和递减)

    学习地址:http://blog.csdn.net/stpeace/article/details/8091123 #include<iostream>using namespace st ...

  7. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  8. 从决策树学习谈到贝叶斯分类算法、EM、HMM - 结构之法 算法之道

    转载自:http://scm.zoomquiet.io/data/20121220000040/index.html 第一篇:从决策树学习谈到贝叶斯分类算法.EM.HMM (Machine Learn ...

  9. 数据结构与算法之链表结构寻找p、q最近的公共祖先

    链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...

最新文章

  1. js中如何得到循环中的点击的这个id_Js篇面试题9请说一下Js中的事件循环机制
  2. java io类库,Java利用io类库对各种文件的操作详解
  3. 第一批 90 后还有半个月就 30 岁了!那些 30 岁前就成博导的人都怎样了...
  4. 红点中国、红杉中国联合领投,WakeData惟客数据完成1000万美元B轮融资
  5. Java虚拟机(四)——类加载机制
  6. Java的几个不错的网站
  7. Oracle 客户端安装 + pl/sql工具安装配置
  8. ijkplayer框架详解
  9. mysql导出csv 分隔符_导出到CSV文件,CSV文件好像是以逗号为分隔符的吧?如果数据库字段里含有逗号怎么处理?比如说下面这个字...
  10. Arduino学习(一)蓝牙模板之JDY-16 BLE(1)
  11. Mac快速关闭当前窗口
  12. wxWidgets(1) :mac下搭建wxWidgets 3.0 环境
  13. Threejs实现模拟管道液体流动
  14. 初读《设计模式之禅》
  15. 爬取猫眼电影评论及数据分析(三)之数据可视化
  16. Vue 脚手架搭建目录及文件详解
  17. linux红外遥控进程,46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1)...
  18. ubuntu命令行fdisk扩展分区
  19. mahony 互补滤波器
  20. 大数据技术之Hadoop(MapReduce)

热门文章

  1. html5视频播放怎么结束,html5设置或返回音频/视频是否应该在结束时再次播放的属性loop...
  2. linux spyder 目录,linux下创建spyder桌面图标的方法
  3. 约瑟夫环算法c语言,约瑟夫环的c语言实现(代码已实现)
  4. vue 使用fs_模仿vue-cli,手写一个脚手架
  5. python sslerror_python3中SSLError错误处理
  6. java condition_死磕Java并发:J.U.C之Condition
  7. python多进程的使用方法
  8. java的json导出excel_利用json生成excel表格
  9. matlab contour光滑,Matlab contour作图不显示的可能原因
  10. 给新手项目经理的12条建议