二叉树的建立以及前序遍历、中序遍历、后序遍历
来源:互联网 发布:淘宝直播链接提取 编辑:程序博客网 时间:2024/05/21 05:06
这几天在复习数据结构,参考的书籍是《大话数据结构》,刚开始我一直不明白,在函数CreateBiTree中为什么要传入一个BiTree的指针。因为我认为BiTree它本身不就是一个指针吗,为什么还要搞一个指针的指针,我就去除那个*,发现不能正常的建树。到网上查阅资料后才发现,原来我们在建树的过程中,我们需要改变BiTree的值,如果我只传入一个BiTree对象,是改不了他的值,形参不会对实参有影响。如果我们想改变一个对象的值,我们必须传入一个该对象的指针,或者引用该对象,才会使该对象的值发生改成。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <map>#include <algorithm>using namespace std;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void CreateBiTree(BiTree *T)//T是一个指向BiTree对象的指针。根据前序表达式建立二叉树{ char ch; scanf("%c",&ch); if(ch=='#') *T=NULL; else { *T=(BiTree)malloc(sizeof(BiTNode));//*T=BiTree,BiTree本身是一个指针。 (*T)->data=ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); }}void PreOrderTraverse(BiTree T)//前序遍历{ if(T==NULL) return; printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild);}void InOrderTraverse(BiTree T)//中序遍历{ if(T==NULL) return; InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild);}void PostOrderTraverse(BiTree T)//后序遍历{ if(T==NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data);}int main(){ BiTree T=(BiTree)malloc(sizeof(BiTNode)); CreateBiTree(&T);//改变一个对象的值要么传入一个引用,要么传入一个指针。 PreOrderTraverse(T); cout<<endl; InOrderTraverse(T); cout<<endl; PostOrderTraverse(T); cout<<endl; return 0;}
阅读全文
0 0
- 二叉树的建立以及前序遍历、中序遍历、后序遍历
- 扩展二叉树 建立 以及 前序遍历 中序遍历 后序遍历 的非递归算法
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 二叉树的建立,前序遍历,中序遍历,后序遍历
- 二叉树的前序遍历,中序遍历,后序遍历以及相互之间的求法
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- 二叉树建立,前序遍历,中序遍历,后序遍历 思路
- 二叉树的遍历(前序遍历、中序遍历、后序遍历)
- 二叉树的遍历 前序遍历 中序遍历 后序遍历
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- java编写二叉树以及前序遍历、中序遍历和后序遍历
- java编写二叉树以及前序遍历、中序遍历和后序遍历
- 二叉树以及前序遍历、中序遍历和后序遍历
- 二叉树的非递归遍历以及层次遍历(前序、中序、后序)
- 编程实现二叉树的建立,前序遍历,中序遍历和后续遍历
- C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历、中序遍历、后续遍历)
- 通过前序(后序), 中序遍历建立二叉树 求解层次遍历
- KVM 性能优化之磁盘IO优化
- 将一个表从数据库考到另一个库
- 制作图标字体
- Linux查看MySQL版本的四种方法
- FZU
- 二叉树的建立以及前序遍历、中序遍历、后序遍历
- C++ 删除单链表中值重复的结点_类似选择排序的解法
- 中企动力助力巨通装饰 让家装行业再无痛点
- 动态规划理解
- 狙击ibatis的<sql>和引用者的顺序
- [编程题] 简单错误记录
- 软件测试 评测
- ambari 安装服务分析
- 《利用Python进行数据分析》笔记---第11章金融和经济数据应用