二叉树的非递归遍历——前序
来源:互联网 发布:win10优化不了怎么办 编辑:程序博客网 时间:2024/05/17 08:19
**
二叉树的非递归遍历——前序
**
1.核心思想
①非递归,即必须要利用栈来实现;②前序遍历的顺序为,先输出当前节点数据域的值,再输出其左子树上的值,其次为右子树;③利用栈的先进后出,先将右子树存入,再将左子树存入,出栈时自然先左后右,将这个过程写入循环,即可实现非递归遍历;
2.代码
①结构体类型
typedef struct Node{ int data; struct Node *left; struct Node *right;}BTNode;
②核心代码
void Forder(BTNode *root){//传入一颗二叉树BTNode **S=(BTNode**)malloc(N*sizeof(BTNode*));//申请一段空间来存放节点,N为总节点个数(虽然用不完)int top=-1;//栈顶指针初始化BTNode *p;//接受出栈的节点S[++top]=root;//先将根节点入栈while(top!=-1){//当栈顶指针为-1时停止,这里也可用do while结构,个人喜好p=S[top--];//前序遍历,先出栈cout<<p->data<<"\t";if(p->right) S[++top]=p->right;//先进后出,故先存右子女if(p->left) S[++top]=p->left;}free(S);//最后将所申请的空间释放掉}
③主函数
int main(void){ int Data[8]={3,2,5,8,4,7,6,9}; BTNode *root=CreateTree(Data,8);//参考二叉搜素数的创建 Forder(root);}
3输出效果
有疑问欢迎留言讨论………..
阅读全文
0 0
- 二叉树的非递归遍历——前序
- 【二叉树遍历算法】——前/中/后序递归与非递归的实现
- 二叉树的前序遍历(递归+非递归)
- 非递归前序遍历二叉树
- 数据结构 — 实现二叉树的前序,中序,后序遍历(非递归)
- 二叉树的非递归前序、后序遍历
- [算法]二叉树的非递归前序遍历算法
- 二叉树的非递归前序遍历
- lintcode-二叉树的前序遍历(非递归)-66
- 二叉树的非递归前序遍历
- 二叉树的前序遍历(非递归)
- 二叉树的前序遍历---非递归实现
- 二叉树的非递归前序遍历
- 二叉树的非递归【前/中/后 序遍历】
- 二叉树的前序遍历非递归形式
- 树的学习——(递归构建二叉树、递归非递归前序中序后序遍历二叉树、根据前序序列、中序序列构建二叉树)
- 前,中,后序遍历二叉树 (递归 && 非递归的栈 && 非递归非栈的线索二叉树)
- 【二叉树】 前序、中序和后序的递归遍历与非递归遍历
- git 常用语句总结
- Java 泛型类
- 1029 序列排序找中位数
- 去掉空格
- 作业4、5
- 二叉树的非递归遍历——前序
- SQL优化-索引
- 101. Symmetric Tree
- maven创建项目后pom.xml报错Failure to transfer org.codehaus.plexus:plexus-xx:pom:x.0 from
- Fragment+FragmentTabHost实现底部菜单栏
- 文章标题
- TCP/IP、Http、Soap三个基本的通讯协议有什么区别
- Atitit 防烫伤指南与规范 attilax总结
- 文件断点下载