普通树的一些操作,杂记
来源:互联网 发布:新疆网络推广 编辑:程序博客网 时间:2024/06/03 16:19
普通树的一些操作,杂记
//树的数据结构,静态实现 struct Node{ typename data; //数据域 vector child; //指针域,存放所有子结点的下标 }node[maxn]; //结点数组,maxn为结点上限个数//新建一个树结点,但是,一般考试中设计树(非二叉树)的考查时,//一般都给出了结点的编号,我们可以把给定的编号直接作为node数组的//下标来使用。 int index=0;int new_node(int v){ node[index].data =v; node[index].child.clear(); //清空子结点 return index++; //返回结点下标,并令index自增 } //如果题目中不涉及结点的数据域只需要数的结构//简化为: vector<int> child[maxn]//树的先根遍历void preorder(int root) { printf("%d ",node[root].data); //访问当前结点 for(int i=0;i<node[root].child.size();i++) { preorder(node[root].child[i]); //递归访问结点root的所有子结点 }}//树的层序遍历void layerorder(int root) { queue<int> queue; queue.push(root); while(!queue.empty()) { int front=queue.front(); printf("%d ",node[front].data); //访问当前结点的数据 queue.pop(); for(int i=0;i<node[front].child.size();i++) { queue.push(node[front].child[i]); //将当前结点的所有子结点如队列 } }}//带 层 的树的数据结构静态实现struct Node{ int layer; //记录层号 int data; vector<int> child;}node[maxn]; //新的树的 层序遍历void layerorder(int root) { queue<int> queue; queue.push(root); node[root].layer=1; while(!queue.empty()) { int front=queue.front(); //取出队首元素 printf("%d ",node[front].data); queue.pop(); for(int i=0;i<node[front].child.size();i++) { int child=node[front].child[i]; node[child].layer=node[front].layer+1; queue.push(child); //将当前结点的所有子结点入队列 } }}
阅读全文
0 0
- 普通树的一些操作,杂记
- 树的一些操作,杂记
- AVL--平衡二叉树的一些操作,杂记
- gentoo的一些杂记
- SOA的一些杂记
- 线程的一些杂记
- XCode的一些调试 杂记
- 最近工作的一些杂记
- UISearchBar学习的一些杂记
- 面向对象的一些杂记
- 自学Mysql的一些杂记
- 杂记(一些CSS的透明,阴影,渐变样式以及关于浏览器缩放的对应操作)
- java的io操作杂记
- 一些普通的ext方法
- 一些杂记
- 一些杂记
- 一些杂记
- 一些杂记
- Android实现 制作隐藏图片效果 "幻影坦克"
- C语言基础(三)
- 利用VBO绘制
- kylin从入门到实战:具体案例
- networkx常用操作记录
- 普通树的一些操作,杂记
- ACM数塔
- Android的inflate()方法
- Android HandlerThread源码分析
- 互联网规律——越开放or越封闭?
- 用pycharm安装scrapy框架
- hive创建自定义函数
- perl 正则表达式使用技巧
- Redis 客户端开发包-学习-入门