二叉树前序遍历的迭代实现
来源:互联网 发布:淘宝售后客服具体工作 编辑:程序博客网 时间:2024/06/05 19:35
#include <stdio.h>#include <stdlib.h>struct BinTreeNode{ int Element; struct node* Left; struct node* Right;};//以下代码用于建树,便于测试中序遍历程序是否正确struct BinTreeNode* CreateNode(int data){//创造新节点 struct BinTreeNode* temp; temp=(struct BinTreeNode*)malloc(sizeof(struct BinTreeNode)); if(temp!=NULL){ temp->Element=data; temp->Left=NULL; temp->Right=NULL; } return temp;}struct BinTreeNode* FindNode(struct BinTreeNode* BinTree,int data)//查找{ if(BinTree==NULL) return NULL; if(BinTree->Element==data) return BinTree; struct BinTreeNode* temp=NULL; if(BinTree->Left!=NULL) temp=FindNode(BinTree->Left,data); if(temp==NULL&&BinTree->Right!=NULL) temp=FindNode(BinTree->Right,data); return temp;}//假设每个节点值不同#define LEFT 1#define RIGHT 0struct BinTreeNode* InsertNode(struct BinTreeNode* BinTree,int loc,int dir,int data)//插入节点,loc代表插入的数的父节点的值,dir表示方向{ struct BinTreeNode* parent=FindNode(BinTree,loc); if(parent!=NULL){ struct BinTreeNode* temp=CreateNode(data); if(dir==LEFT) parent->Left=temp; else parent->Right=temp; } return BinTree;}//二叉树前序遍历的迭代实现,用到栈/*思路:遇到一个节点,先访问,然后把他压栈,并去遍历他的左子树;当左子树遍历结束,从栈顶弹出这个节点;按其右指针去中序遍历该节点的右子树;*/void ProOrderTrversal(struct BinTreeNode* BinTree){ //建栈 struct BinTreeNode* stack[100]; int top=-1; struct BinTreeNode* Temp=BinTree; while(Temp!=NULL||top>=0){ while(Temp!=NULL){ printf("%d ",Temp->Element); top++; stack[top]=Temp; Temp=Temp->Left; } if(top>=0){ Temp=stack[top]->Right; top--; } }}int main(){ struct BinTreeNode* BinTree; //先手工创建一个树 //不提倡此类建树方法,只是暂时用于测试程序 BinTree=CreateNode(10); BinTree=InsertNode(BinTree,10,1,20); BinTree=InsertNode(BinTree,10,0,30); BinTree=InsertNode(BinTree,30,1,40); BinTree=InsertNode(BinTree,40,0,50); //遍历 ProOrderTrversal(BinTree); return 0;}
1 0
- 二叉树前序遍历的迭代实现
- 二叉树中序遍历的迭代实现
- 二叉树后序遍历的迭代实现
- 二叉树遍历的所有递归和迭代实现
- 二叉树3中遍历方法的迭代实现
- 二叉树遍历的迭代算法
- 二叉树遍历的迭代算法
- 二叉树中序遍历的迭代版本
- 二叉树的三种遍历方式的递归实现和迭代实现
- 迭代遍历二叉树
- 二叉树的遍历的迭代和递归实现方式
- Java迭代实现二叉树的前序、中序、后序遍历
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- 二叉树之中序遍历的递归和迭代实现
- 二叉树前序,中序,后序遍历迭代实现详解
- 二叉树的递归、迭代遍历的模板代码
- 二叉树的遍历(递归与迭代)
- [转载]二叉树逆序遍历的迭代解法
- 监听,定时器
- 手动注入Bean
- jquery判断单选是否为空
- Android应用在不同版本间兼容性处理
- iOS 版本号
- 二叉树前序遍历的迭代实现
- 使用Fragment懒加载的一种方式
- linux下PHP 环境搭建
- 不懂技术的人不要对懂技术的人说这很容易实现
- 10.26
- 内存使用问题应该注意这五点
- 机器学习&深度学习资料(Chapter 15 )
- govmomi (vSphere SDK for Go), govc CLI & Kubernetes on vSphere
- 11月12日广州源创会火热报名中