三种创建二叉树的方式
来源:互联网 发布:数据透视分析表怎么用 编辑:程序博客网 时间:2024/06/08 04:35
方式一:控制台输入,递归方式。
代码:
void BuildBinTree(BinTree *T){char item;cin>>item;if(item=='#'){*T = NULL;}else {*T = new BinTreeNode;(*T)->data = item; BuildBinTree(&((*T)->lchild));BuildBinTree(&((*T)->rchild));}}方式二:从数组参数创建。递归方式。见文章《二叉树的常见问题及其解决程序》。
代码:
void buildBinTreeFromArray(int a[],int left,int right,BinTree *T){if(left<=right){int mid = left + right >> 1;*T = new BinTreeNode;(*T)->data = a[mid];(*T)->lchild = (*T)->rchild = NULL;buildBinTreeFromArray(a,left,mid-1,&((*T)->lchild));buildBinTreeFromArray(a,mid+1,right,&((*T)->rchild));}}
测试:
代码:
void buildBinTree(BinTree *T,char *str){stack<BinTree> s;*T = NULL;BinTree p,t;p = t = NULL;int i,k;i = 0;while(str[i]){switch(str[i]){case '(': s.push(p); k = 1; break;case ')': t = s.top(); s.pop(); break;case ',': k = 2; break;default:p = new BinTreeNode;p->data = str[i];p->lchild = p->rchild = NULL;if (*T == NULL){*T = p;}else if (k == 1){t = s.top();t->lchild = p;}else {t = s.top();t->rchild = p;}}i++;}}
REF:
1,http://blog.csdn.net/luxiaoxun/article/details/7536992
2,http://blog.csdn.net/randyjiawenjie/article/details/6772145
0 0
- 三种创建二叉树的方式
- 二叉树的创建和三种遍历方式
- 二叉树的创建和三种遍历方式
- C预言的二叉树的创建和三种遍历方式
- 二叉树的三种遍历方式
- 二叉树的三种遍历方式
- 二叉树的三种遍历方式
- 二叉树的三种遍历方式
- 二叉树的三种遍历方式
- 二叉树的创建,插入,删除,输出,求高度,求度以及三种遍历方式实现
- 二叉树的创建与三种形式的遍历
- 二叉树的创建及遍历方式
- 二叉树的java构建和三种遍历方式
- 数据结构中二叉树的三种遍历方式
- 二叉树的建立以及三种遍历方式
- 二叉树的三种遍历方式:递归、栈、循环
- 二叉树的遍历三种方式()
- 二叉树的三种遍历方式java实现
- 剑指offer面试题13扩展:带头指针的单链表的操作
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
- Etherpeek监听UDP报文时间戳获取
- libsvm工具箱C++下编程实践1
- ruby on rails学习(一)
- 三种创建二叉树的方式
- 盘位wi为什止得知蹿
- 大牛很通俗地介绍《信号与系统》
- C++ Primer Plus第六版 第五章 编程练习答案
- js上传图片,同时生成缩略图
- ZOJ3228 Searching the String
- hdu 1372 Knight Moves
- 浅谈Linux内存管理机制
- hdu 1880