C语言之二叉树

二叉树的存储结构由二叉链表实现。

二叉树节点的创建

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);
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_40288381/article/details/81138693