二叉樹的遍歷


 

二叉樹有:先序遍歷后序遍歷中序遍歷

先序遍歷:

中序遍歷:

后序遍歷:

先要做得是建立鏈表,鏈表用遞歸的方法:

void creat(BiTree *root,int i)

 {

        if(i>=l||s[i]=='.')

                 *root=NULL;//如果輸入點就表示空;

      else

         {

               *root=(BiTree)malloc(sizeof(BiNode));//開辟新空間;

                       (*root)->data=s[i];

               creat(&((*root)->LChild),2*i+1); //遞歸。

               creat(&((*root)->RChild),2*i+2);

    }

 }

遍歷:(以后序為例)

void PreOrder(BiTree root)

 {

        if(root!=NULL)

       {

            PreOrder(root->LChild);//輸出結點;

              PreOrder(root->RChild);

             printf("%c",root->data);

 }

}

主函數:

void main()

 {

           BiTree T; //跟結點‘

            while(scanf("%s",s)!=EOF)

            {

                  l=strlen(s);//計算長度;

                  i=0;

                   creat(&T,i);

                  PreOrder(T);

                  printf("\n");

            }

 }

完整的函數:

#include<stdio.h>  #include<stdlib.h>  #include <string.h> typedef struct Node { char data; struct Node *LChild; struct Node *RChild;  }BiNode,*BiTree;  char s[100];    int l,i; void creat(BiTree *root,int i) { if(i>=l||s[i]=='.') *root=NULL;  else  {  *root=(BiTree)malloc(sizeof(BiNode));  (*root)->data=s[i];  creat(&((*root)->LChild),2*i+1);  creat(&((*root)->RChild),2*i+2);  }  } void PreOrder(BiTree root)  { if(root!=NULL) { PreOrder(root->LChild);  PreOrder(root->RChild); printf("%c",root->data); }  } void main() { BiTree T;  while(scanf("%s",s)!=EOF)  {  l=strlen(s);  i=0;  creat(&T,i); PreOrder(T); printf("\n"); } }

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹的遍歷 二叉樹(1)-----遍歷
 
粤ICP备14056181号  © 2014-2021 ITdaan.com