二叉树的数组实现
来源:互联网 发布:科比勤奋 知乎 编辑:程序博客网 时间:2024/05/29 14:06
书上大多是结构体+指针实现的,但在好多情况下数组的实现情况更多一些,于是我自己就想了一个用数组实现的二叉树,以及他的dfs和bfs。
其中有的代码我没实现,只是有个轮廓。
创建还是用的递归,在输出时,第一次注释的地方用的i*2和i*2+1,并用递归实现循环,但不能控制结束,应该加一个m标识输出数。第一个分割线的部分我用的就是直接输出数组,第二个分割线的部分我用的中序遍历。代码还有不成熟的部分,就在创建的地方我用的0作为支点为null。
#include<iostream>#include<string.h>using namespace std;int i = 1,m=0;void creat(int a[],int i) { int n; cin >> n; if (n) { a[i] = n; m++; creat(a, i * 2); creat(a, i * 2 + 1); } else return; }void print(int a[],int i) { /*if (i == 1)cout << a[i] << " "; if (a[i * 2]) { if (a[i * 2 + 1]) { cout << a[i * 2] << " " << a[i * 2 + 1] << " "; print(a, i+1); } else { cout << a[i * 2] << " "; print(a, i+1); } } if (a[i * 2 + 1]) { if (!a[i * 2]) { cout << a[i * 2 + 1] << " "; print(a, i + 1); } } return print(a, i); */ //---------------------------------------- for (int i = 0;; i++) { if (m) { if (a[i]) { cout << a[i] << " "; m--; } } else break; } //------------------------------ if (a[i]) { print(a, i * 2); cout << a[i]; print(a, i * 2 + 1); } else return;}int main(void) { int a[100]; memset(a, 0, sizeof(a)); creat(a, i); print(a,1); system("pause");}
阅读全文
0 0
- 二叉树的数组实现
- 数组实现二叉树
- 数组实现二叉树
- 树--二叉树的数组实现
- 静态数组实现的二叉搜索树
- 二叉搜索树的数组实现
- 二叉搜索树-数组的实现方式
- 二叉树的操作实现---数组篇
- 数组实现完全二叉树
- 数组实现二叉查找树
- C++实现二叉树数组
- 堆的实现-用数组表示的完全二叉树
- 九度 题目1009:二叉搜索树 (静态数组构建二叉树\二叉树的数组实现)
- 《数据结构之树篇》--二叉树的数组实现
- 二叉树的几种实现方式(1)数组法
- Uva122 Trees on the level 二叉树的数组实现
- C++数组实现最简单的二叉树
- Javascript实现从小到大的数组转换成二叉搜索树
- C++中的 peek()、get()、getline()
- Video.js自定义使用
- poj 2236 Wireless Network
- 吴恩达推荐好文:中国人工智能的崛起
- java封装中关于set()和get()的用法
- 二叉树的数组实现
- 一个关于git的小问题
- CSS布局——水平居中
- HDOJ2056_Rectangles
- [C/C++]硬货 数据库开发之mysql
- 全功能音视频互动开发平台
- Facebook创始人——扎克伯格
- Codeforces Round #372 (Div. 2) B. Complete the Word(模拟)
- 线性表综合实验——双链表