博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论14:树形数据结构——二叉树 2016.1.14
阅读量:5998 次
发布时间:2019-06-20

本文共 1077 字,大约阅读时间需要 3 分钟。

  从上一篇开始应该就能感受到,其实既然环形的数据结构可以做出来,各种形状的数据结构都可以做出来,只要设计好节点的属性和节点之间的关系就行了。

  用指针的实现会更加好理解,但是编程复杂度会相对更高,用数组实现,编程复杂度相对低,但是相对不那么直观。所以两种方式灵活选择吧。(不过用c++很多内置对象就可以解决很多问题)

  在树的数据结构中,最简单也是最常用的就是二叉树了。关于二叉树的数组实现,在堆排序里已经写过了。所以这里只写一下指针的实现。

#include
#include
#include
typedef struct _node { char ch; struct _node *leftchild; struct _node *rightchild;}node;void buildtree(node *&p){ p=(node *)malloc(sizeof(node)); char c=getch(); putchar(c); if (c==' ') { p->leftchild=NULL; p->rightchild=NULL; } else { p->ch=c; buildtree(p->leftchild); buildtree(p->rightchild); }}void showmidtree(node *&p){ if (p->leftchild!=NULL || p->rightchild!=NULL) { putchar(p->ch); } if (p->leftchild!=NULL) shomidtree(p->leftchild); if (p->rightchild!=NULL) showmidtree(p->rightchild);}int main(){ node *root; buildtree(root); showpretree(root); return 0;}

在建立的时候还是用到了递归,代码中输出二叉树用的是中序遍历,至于这些规则有什么用,目前我也不太清楚,也许后面会有算法用到吧。

转载于:https://www.cnblogs.com/itlqs/p/5131356.html

你可能感兴趣的文章
二级域名seo与一级目录seo的区别
查看>>
142426338218099852.jpg
查看>>
Linux后台命令的使用说明
查看>>
ui-router中使用ocLazyLoad和resolve
查看>>
Android Studio Gradle Could not reserve enough space for object heap
查看>>
命名空间(解决了为什么使用using namespace std;的疑惑)
查看>>
maven默认本地仓库
查看>>
10 分钟 创建分布式微服务
查看>>
JavaScript程序的执行顺序
查看>>
js_高级回顾js
查看>>
javascript中判断字符串是否以指定字符串开始或结尾
查看>>
MySQL 5.5 新增SIGNAL异常处理
查看>>
查找文件
查看>>
iOS UIDynamic
查看>>
关于java写进mysql中文乱码问题
查看>>
MongoDB3.0 创建用户
查看>>
jQuery选择器
查看>>
Java加密算法(三)——PBE算法
查看>>
简单通用的访问CVS的方法
查看>>
jQuery- 表单验证插件-Validation
查看>>