二叉树的遍历算法(递归和非递归)
来源:互联网 发布:淘宝限购在哪里设置 编辑:程序博客网 时间:2024/05/02 01:31
二叉树的遍历
1.递归实现
void PreOrder(BiTree T){ if(T!=NULL) { printf("%d ",T->data); PreOrder(T->lchlid); PreOrder(T->rchlid); }}void InOrder(BiTree T){ if(T!=NULL) { InOrder(T->lchlid); printf("%d ",T->data); InOrder(T->rchlid); }}void PostOrder(BiTree T){ if(T!=NULL) { PostOrder(T->lchlid); PostOrder(T->rchlid); printf("%d ",T->data); }}
2.非递归实现
前序遍历
void _PreOrder(BiTree T){ BiTree p=T; top=-1; Stack[++top]=p; while(top>=0) { p=Stack[top--]; printf("%d ",p->data); if(p->rchlid) Stack[++top]=p->rchlid; if(p->lchlid) Stack[++top]=p->lchlid; }}
中序遍历
void _InOrder(BiTree T){ BiTree p=T; top=-1; while(p||top>=0) { if(p) { Stack[++top]=p; p=p->lchlid; } else { p=Stack[top--]; printf("%d ",p->data); p=p->rchlid; } }}
后序遍历
void _PostOrder(BiTree T){ BiTree p=T,r=NULL; top=-1; while(p||top>=0) { if(p) { Stack[++top]=p; p=p->lchlid; } else { p=Stack[top]; if(p->rchlid&&p->rchlid!=r) { p=p->rchlid; } else { top--; printf("%d ",p->data); r=p; p=NULL; } } }}
0 0
- 二叉树的遍历算法(递归和非递归)
- 二叉树遍历(递归算法和非递归算法)
- 二叉树的递归和非递归的遍历算法
- 遍历二叉树的递归和非递归算法
- 二叉树遍历的递归和非递归算法
- 二叉树的遍历-递归和非递归算法
- 二叉树的递归和非递归遍历算法
- 算法-二叉树遍历(递归和非递归)
- 二叉树的遍历算法(递归与非递归)
- 二叉树的遍历(递归和非递归)
- 二叉树的遍历(递归和非递归)
- 二叉树的建立和遍历(递归、非递归)
- 二叉树的遍历(非递归和递归实现)
- 二叉树的先序中序后序遍历 (递归和非递归)
- 二叉树的递归和非递归遍历(java)
- C语言 二叉树的遍历 递归和(多种)非递归算法
- 总结的四种二叉树遍历算法(递归和非递归)
- C语言 二叉树的遍历递归和(多种)非递归算法
- java自带的log java.util.logging
- git origin/master
- Oracle:SQL语句--对表空间的操作——删除表空间
- 致雅嵌入式工作室——收到GPS模块的数据
- Android--MVP架构设计Listview
- 二叉树的遍历算法(递归和非递归)
- 内存溢出问题
- mysql的3种分表方案
- Build aosp for Nexus
- poj 2559 Largest Rectangle in a Histogram 求面积最大的矩形(单调栈)
- PING++微信支付问题小结
- Ubuntu,kubuntu与xubuntu的差别 Ubuntu各版本主要差异
- MySQL隐式转化整理
- idea 14提示override错误