二叉树的存储结构由二叉链表实现。
二叉树节点的创建
struct tree
{
int data;
struct tree* left_child;
syruct tree* right_child;
}tree_node;
二叉树的遍历
访问和次序。二叉树的定义是用递归的方式,所以,实现遍历算法也可以采用递归。
现在的我对递归的理解有了更深的认识(递归就是在进入每次函数前,将未执行的语句入栈,等到返回时,再重新执行。
比如下面的代码,先执行了left_child,之后一直向下递归left_child,之后返回,把没有执行的right_child都执行了)
void tree_travel(struct tree tree_node*)
{
if(tree_node==NULL)
{
printf("error");
exit(-1);
}
printf("%d",tree_node->data);
tree_travel(tree_node->left_child);
tree_travel(tree_node->right_child);
}
二叉树的建立
利用了递归的思想
typedef struct tree tree
void tree_create(tree* tree_node)
{
char ch;
ch=getchar();
if(ch=='#')
{
tree_node=NULL;
}
else
{
tree_node=(tree*)malloc(sizeof(tree));
tree_node->=ch;
tree_create(tree_node->left_child);
tree_create(tree_node->right_child);
}
}