二叉树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博文,开通博客审核通过,学生一枚,初来乍到。明天再改。。。

posted @   ppppppro  阅读(372)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示