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