程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 數據結構之二叉樹的遞歸創建、遞歸遍歷

數據結構之二叉樹的遞歸創建、遞歸遍歷

編輯:C++入門知識

[cpp]  // Tree.cpp : Defines the entry point for the console application.    //       #include "stdafx.h"    #include "stdio.h"    #include "iostream"       using namespace std;      typedef struct node   {       int data;       struct node *lchild;       struct node *rchild;   }BiTNode, *BiTree;      int CreateBiTree(BiTree &T);   int CreateBiTree(BiTree &T,int &index);   void PreOrder(BiTree root);   void InOrder(BiTree root);   void PostOrder(BiTree root);      int element[]={3,7,3,2,1,0,0,7,0,0,0,8,0,10,0,0,17,18,0,0,19,0,27,0,0};   static int index=0;   int _tmain(int argc, _TCHAR* argv[])   {              BiTree tree;       // 遞歸的創建二叉樹        CreateBiTree(tree,index);       printf("創建二叉樹完畢\n");       printf("先序遍歷\n");       PreOrder(tree);       printf("\n");       printf("中序遍歷二叉樹\n");       InOrder(tree);       printf("\n");       printf("二叉樹的後序遍歷\n");       PostOrder(tree);       printf("\n");          system("pause");       return 0;   }      // 按照先序順序,遞歸的創建二叉樹    int CreateBiTree(BiTree &T)   {       int data;       scanf("%d",&data);       if (data==0) // 0代表子節點為空        {           T=NULL;       }       else       {           T=(BiTree)malloc(sizeof(BiTNode));           if (!T)           {               return -1;           }           else           {               T->data=data;               CreateBiTree(T->lchild);               CreateBiTree(T->rchild);           }       }       return 1;   }      // 按照先序順序,遞歸的創建二叉樹,通過數組輸入二叉樹中的數據    int CreateBiTree(BiTree &T,int &index)   {       int data=element[index];       if (data==0) // 0代表子節點為空        {           T=NULL;       }       else       {           T=(BiTree)malloc(sizeof(BiTNode));           if (!T)           {               return -1;           }           else           {               T->data=data;               CreateBiTree(T->lchild,++index);               CreateBiTree(T->rchild,++index);           }       }       return 1;   }      // 先序遍歷二叉樹    void PreOrder(BiTree root)   {       if (root!=NULL)       {           printf("%3d",root->data);           PreOrder(root->lchild);           PreOrder(root->rchild);       }   }      // 中序遍歷    void InOrder(BiTree root)   {       if (root!=NULL)       {           InOrder(root->lchild);           printf("%3d",root->data);           InOrder(root->rchild);       }   }      // 後序遍歷    void PostOrder(BiTree root)   {       if (root!=NULL)       {           PostOrder(root->lchild);           PostOrder(root->rchild);           printf("%3d",root->data);       }   }     // Tree.cpp : Defines the entry point for the console application. //   #include "stdafx.h" #include "stdio.h" #include "iostream"   using namespace std;   typedef struct node { int data; struct node *lchild; struct node *rchild; }BiTNode, *BiTree;   int CreateBiTree(BiTree &T); int CreateBiTree(BiTree &T,int &index); void PreOrder(BiTree root); void InOrder(BiTree root); void PostOrder(BiTree root);   int element[]={3,7,3,2,1,0,0,7,0,0,0,8,0,10,0,0,17,18,0,0,19,0,27,0,0}; static int index=0; int _tmain(int argc, _TCHAR* argv[]) {   BiTree tree; // 遞歸的創建二叉樹 CreateBiTree(tree,index); printf("創建二叉樹完畢\n"); printf("先序遍歷\n"); PreOrder(tree); printf("\n"); printf("中序遍歷二叉樹\n"); InOrder(tree); printf("\n"); printf("二叉樹的後序遍歷\n"); PostOrder(tree); printf("\n");   system("pause"); return 0; }   // 按照先序順序,遞歸的創建二叉樹 int CreateBiTree(BiTree &T) { int data; scanf("%d",&data); if (data==0) // 0代表子節點為空 { T=NULL; } else { T=(BiTree)malloc(sizeof(BiTNode)); if (!T) { return -1; } else { T->data=data; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } return 1; }   // 按照先序順序,遞歸的創建二叉樹,通過數組輸入二叉樹中的數據 int CreateBiTree(BiTree &T,int &index) { int data=element[index]; if (data==0) // 0代表子節點為空 { T=NULL; } else { T=(BiTree)malloc(sizeof(BiTNode)); if (!T) { return -1; } else { T->data=data; CreateBiTree(T->lchild,++index); CreateBiTree(T->rchild,++index); } } return 1; }   // 先序遍歷二叉樹 void PreOrder(BiTree root) { if (root!=NULL) { printf("%3d",root->data); PreOrder(root->lchild); PreOrder(root->rchild); } }   // 中序遍歷 void InOrder(BiTree root) { if (root!=NULL) { InOrder(root->lchild); printf("%3d",root->data); InOrder(root->rchild); } }   // 後序遍歷 void PostOrder(BiTree root) { if (root!=NULL) { PostOrder(root->lchild); PostOrder(root->rchild); printf("%3d",root->data); } }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved