前中序或中后序求二叉树
在此拿前中序举例,前序由根+左子树+右子树的形式构成,中序由左子树+根+右子树构成 。在中序找到从前序得知的根节点位置,根据中序分成左右子树,用递归的方法求得二叉树。代码如下:
1 | typedef char TElemType; |
1 | void CrtBT(BiTree &T,char pre[],char ino[],int ps,int is,int n){ |
线索二叉树的实现和遍历
这个算法我觉得表面还是比较好理解的,如果想搞清楚每一层递归和外边层的关系就有点混乱,比如这个pre,外边层的pre变量是前一次执行完一次递归后的那个pre,而且pre如果是NULL时不能进入判断会访问非法,要加一个pre是否为空的判断.还有一个大,最开始创建树的时候没有对两个标志变量赋初值。导致出现死循环和输出少的情况,最后实现了这个算法,下面是代码:(输入前序输出中序)
1 |
|