二叉树demo01

简单的二叉树的创建(前序输入)&前序遍历&中序遍历&后序遍历

#include <stdio.h> #include <stdlib.h> #define MAX 1024 typedef struct bitnode { int data; struct bitnode *lchild; struct bitnode *rchild; }BinTree; BinTree *Creat_Bintree() { BinTree *p; int x; scanf("%d",&x); if(x==0) { p = NULL; } else { p = (BinTree *)malloc(sizeof(BinTree)); p->data=x; p->lchild=Creat_Bintree(); p->rchild=Creat_Bintree(); } return p; } void PreOrderTraversal(BinTree *r) { if(r) { printf("%d ",r->data); PreOrderTraversal(r->lchild); PreOrderTraversal(r->rchild); } } void InOrderTraversal(BinTree *r) { if(r) { InOrderTraversal(r->lchild); printf("%d ",r->data); InOrderTraversal(r->rchild); } } void LastOrderTraversal(BinTree *r) { if(r) { LastOrderTraversal(r->lchild); LastOrderTraversal(r->rchild); printf("%d ",r->data); } } void NRPreOrder(BinTree *r) { BinTree *stack[MAX]; BinTree *p; int top =-1; if(r==NULL) return; p=r; while(p!=NULL||top!=-1) { while(p!=NULL) { printf("%d ",p->data); top++; stack[top]=p; p=p->lchild; } if(top<0) return; else { p=stack[top]; top--; p=p->rchild; } } } int main() { BinTree *root; root=Creat_Bintree(); printf("前序遍历:"); PreOrderTraversal(root); printf("\n中序遍历"); InOrderTraversal(root); printf("\n后序遍历"); LastOrderTraversal(root); printf("\n非递归前序遍历:"); NRPreOrder(root); return 0; }

第一篇cnblog博文,开通博客审核通过,学生一枚,初来乍到。明天再改。。。

原文地址:https://www.cnblogs.com/Andre/p/11909098.html