二叉树建立和遍历

来源:互联网 发布:校园网络设计方案ppt 编辑:程序博客网 时间:2024/06/05 07:18

二叉树创建遍历规则:

1.先序:根-左-右

2.中序:左-根-右

3.后序:左-右-根


二叉树定义和辅助函数如下:

struct node {      int data;      struct node* left;      struct node* right;  };    void visit(int data)  {      printf("%d ", data);  }  int indata(){    int data;    scanf("%d",&data);    return data;}




先序创建二叉树:

struct node* CreateBiTree()//先序建立一个二叉树  {       char x; //x为根节点      struct node* t;       x=indata();      if (x==' ') /* 判断当前子树是否创建完成*/           return NULL;       else       {           t=(struct node*)malloc(sizeof(struct node));           t->data=x;           t->left=CreateBiTree();           t->right=CreateBiTree();       }       return t;  }  
先序遍历二叉树:

void preOrder(struct node* root)  {      if (root == NULL)          return;      visit(root->data);      preOrder(root->left);      preOrder(root->right);  }  



中序创建二叉树:

struct node* CreateBiTree()//先序建立一个二叉树  {       char x; //x为根节点      struct node* t;       x=indata();      if (x==' ') /* 判断当前子树是否创建完成*/           return NULL;       else       {          t=(struct node*)malloc(sizeof(struct node));         t->left=CreateBiTree();          t->data=x;             t->right=CreateBiTree();       }       return t;  }  
中序遍历二叉树:

void inOrder(struct node* root)  {      if (root == NULL)          return;      inOrder(root->left);      visit(root->data);      inOrder(root->right);  }  




后序创建二叉树

struct node* CreateBiTree()//先序建立一个二叉树  {       char x; //x为根节点      struct node* t;       x=indata();      if (x==' ') /* 判断当前子树是否创建完成*/           return NULL;       else       {          t=(struct node*)malloc(sizeof(struct node));         t->left=CreateBiTree();            t->right=CreateBiTree();       t->data=x;       }       return t;  }  
后序遍历二叉树

void inOrder(struct node* root)  {      if (root == NULL)          return;      inOrder(root->left);       inOrder(root->right);      visit(root->data); }  



转载请注明作者:小刘





3 0
原创粉丝点击