崇尚简约与原始的思维路线:
昨晚保存到Codehelp里的代码,现在粘贴过来,加深对递归的理解。源于此,省去了很多基本操作。
模版代码:
//还原思维的本质,抛弃条条框框的限制,2013年12月5日 23:52:41,夜深了,睡(=-ω-)zzZZ
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode * lchild;
struct BiTNode * rchild;
}BiTNode, * pBiTree;
void InitBiTree(pBiTree * T);
void CreateBiTree(pBiTree * T);
int main(void)
{
pBiTree T;
InitBiTree(&T);
CreateBiTree(&T);
return 0;
}
void InitBiTree(pBiTree * T)
{
*T = NULL;
return ;
}
void CreateBiTree(pBiTree * T)
{
char ch;
scanf("%c",&ch);//前序输入以下ABDH#K###E##CFI###G#J## 考虑是否可以后序输入
//getchar();
if (ch == '#')
*T = NULL;
else
{
*T = (pBiTree)malloc(sizeof(BiTNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);//设置断点
CreateBiTree(&(*T)->rchild);//设置断点
}//设置断点,同以上三个断点的作用是为了清晰明白的了解递归的过程,通过调试程序而不是调用遍历函数,观察变量ch的值,加深对算法的认识.
return ;
}</span></span>