递归和非递归俩种方法实现二叉树的前序遍历
2013-04-09 15:28
691 查看
#include<iostream>
using namsapce std;
typedef struct BiNode
{
struct BiNode* lchild;
struct BiNode* rchild;
char data;
}BiNode,*BiTree;
递归:
void preOrder(BiTree root)
{
if(NULL==root)
return ;
cout<<root->data<<" ";
preOrder(root->lchild);
preOrder(root->rchild);
}
非递归:
void preOrder2(BiTree root)
{
if(NULL==root)
return ;
stack<BiNode*> s;
BiNode* p = root;
cout<<p->data<<" ";
s.push(p);
while(p->lchild)
{
cout<<p->lchild->data<<" ";
s.push(p->lchild);
p = p->lchild;
}
while(!s.empty())
{
p = s.top();
s.pop();
BiNode *q = p->rchild;
while(q!=NULL)
{
cout<<q->data<<" ";
q = q->lchild;
}
}
}
using namsapce std;
typedef struct BiNode
{
struct BiNode* lchild;
struct BiNode* rchild;
char data;
}BiNode,*BiTree;
递归:
void preOrder(BiTree root)
{
if(NULL==root)
return ;
cout<<root->data<<" ";
preOrder(root->lchild);
preOrder(root->rchild);
}
非递归:
void preOrder2(BiTree root)
{
if(NULL==root)
return ;
stack<BiNode*> s;
BiNode* p = root;
cout<<p->data<<" ";
s.push(p);
while(p->lchild)
{
cout<<p->lchild->data<<" ";
s.push(p->lchild);
p = p->lchild;
}
while(!s.empty())
{
p = s.top();
s.pop();
BiNode *q = p->rchild;
while(q!=NULL)
{
cout<<q->data<<" ";
q = q->lchild;
}
}
}
相关文章推荐
- 递归和非递归俩种方法实现二叉树的前序遍历
- 43.递归和非递归俩种方法实现二叉树的前序遍历。
- 请用递归和非递归俩种方法实现二叉树的前序遍历。
- 请用递归和非递归俩种方法实现二叉树的前序遍历。
- 递归和非递归俩种方法实现二叉树的前序、中序、后续遍历
- 43 递归和非递归俩种方法实现二叉树的三种遍历
- 二叉树的三种遍历方式(递归和非递归的实现方法)
- 超级详细的二叉树的3种遍历方法的递归和非递归的实现
- 每天学习一算法系列(35)(递归和非递归俩种方法实现二叉树的前序遍历)
- 第四十三题(递归和非递归俩种方法实现二叉树的前序遍历)
- 二叉树的几种遍历方法及递归和非递归的实现
- 我用Java实现的二叉树的遍历(递归和非递归)
- LeetCode:Binary Tree Preorder Traversal(非递归方法前序遍历二叉树)
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- 用非递归实现二叉树的前序、中序、后序、层次遍历,用递归实现查找、统计个数、比较、求深度
- Java实现二叉树的遍历(递归和非递归)
- 二叉树前中后序遍历的递归版本和非递归版本、队列实现的层次遍历
- C++实现二叉树 前序遍历, 后序遍历, 中序遍历, 层序遍历(不用递归)
- 非递归方法前序遍历二叉树
- 二叉树的深度与广度遍历及前序遍历递归非递归实现