简单的二叉树的创建(前序输入)&前序遍历&中序遍历&后序遍历
Posted andre
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的二叉树的创建(前序输入)&前序遍历&中序遍历&后序遍历相关的知识,希望对你有一定的参考价值。
#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(" 中序遍历"); InOrderTraversal(root); printf(" 后序遍历"); LastOrderTraversal(root); printf(" 非递归前序遍历:"); NRPreOrder(root); return 0; }
第一篇cnblog博文,开通博客审核通过,学生一枚,初来乍到。明天再改。。。
以上是关于简单的二叉树的创建(前序输入)&前序遍历&中序遍历&后序遍历的主要内容,如果未能解决你的问题,请参考以下文章