数据结构与算法问题 二叉树
来源:互联网 发布:淘宝有开刃的剑么? 编辑:程序博客网 时间:2024/05/22 15:18
#include <cassert>#include <cmath>#include <iostream>#include <queue>using namespace std; class Node{public: //值 int data; //左孩子 Node* leftCh; //右孩子 Node* rightCh; //所在层 int level; Node(int data, Node* leftCh, Node* rightCh,int level) { this->data = data; this->leftCh = leftCh; this->rightCh = rightCh; this->level=level; }};int* array;int n;/***先序建树 * */Node* buildNode(int index,int level){ if(index>=n){ return NULL; }else{ Node* p=new Node(array[index], NULL, NULL,level); //递归左子树 p->leftCh=buildNode((index<<1)+1,level+1); //递归右子树 p->rightCh=buildNode((index<<1)+2,level+1); return p; }} void buildTree(int height){ n=(int)pow(2, height)-1; array=new int[n]; for(int i=0;i<n;i++){ array[i]=i+1; } Node* root=buildNode(0,1); queue <Node*> que; que.push(root); int index=0; int level=1; //层序输出 while(!que.empty()){ Node* p=que.front(); que.pop(); //断言顺序表、二叉链表对应的节点相等 assert(p->data==array[index]); if(p->level>level){ cout<<endl; level++; } cout<<p->data<<" "; index++; if(p->leftCh!=NULL){ que.push(p->leftCh); } if(p->rightCh!=NULL){ que.push(p->rightCh); } } cout<<endl;} int main(int argc, char **argv) { buildTree(4); return 0;}
0 0
- 数据结构与算法问题 二叉树
- 数据结构与算法问题 二叉搜索树
- 【数据结构与算法】二叉树
- 数据结构与算法-二叉树
- 算法与数据结构 - 二叉树
- 数据结构与算法:二叉树
- 数据结构与算法:二叉树
- 数据结构与算法-二叉树
- 数据结构与算法问题 AVL二叉平衡树
- 数据结构与算法--二叉树子结构问题
- [数据结构与算法]二叉树与二叉树遍历
- 数据结构与算法(C#实现)---二叉树
- 数据结构与算法(C#实现)---二叉树
- 数据结构与算法系列---二叉树
- 数据结构与算法之二叉树遍历
- .net 数据结构与算法基础:二叉树
- 【数据结构与算法】二叉树广度遍历
- 【数据结构与算法】重建二叉树
- AT24C02
- 一个数组中可根据需要生成若干个独立的链表
- Java杂记之main函数参数
- 线段树处理面积交并 不懂不懂
- HDU 1885 Key Task 状态压缩+搜索
- 数据结构与算法问题 二叉树
- java (4) - break和continue用法详解 -万万没想到系列(2)
- 图像处理和图像识别中常用的OpenCV函数
- Cookies揭秘 [Asp.Net, Javascript]
- TagCloud with xml
- ViewPager嵌套GridView引发的一系列UI卡顿不顺畅的问题
- 少年程序员的奇幻漂流(一)柳少侠前传
- 排序总结
- ny 532 不吉利的数字 no