数据结构--二叉树遍历 C++实现
来源:互联网 发布:比邻交友软件 编辑:程序博客网 时间:2024/06/05 20:55
1、二叉树结构定义
struct node{
int data;//数据
node * leftchild;//左孩子结点
node * rightchild;//右孩子结点
}
2、二叉树的递归遍历
2.1先序遍历
void preorder(node *r){
if(r!=NULL){//NULL 还是null?
cout<<r->data<<endl;//访问结点
preorder(r->leftchild);//递归访问左结点
preorder(r->rightchild);//递归访问右结点
}
}
2.2中序遍历
void inorder(node *r){
if(r!=NULL){
inorder(r->leftchild);
cout<<r->data<<endl;
inorder(r->rightchild);
}
}
2.3后序遍历
void postorder(node *r){
if(r!=NULL){
postorder(r->leftchild);
postorder(r->rightchild);
cout<<r->data<<endl;
}
}
3、二叉树的非递归遍历(中序遍历)
思路:设S为一个工作栈,P为指向根结点的指针;
【1】当P为非空时,将P指向的结点进栈,并将P指向该结点的左子树;
【2】当P为空时,弹出栈顶元素,显示结点元素,并将P指向该结点的右子树;(相当于左子树已经访问完,访问结点,然后访问右子树)
【3】重复步骤【1】【2】,直到栈为空,P为空。
实现:
void InOder(node * r)
{
stack<node *> S;
node *P;
P=r;
while(P||!S.IsEmpty())
{
if(p)
{
S.push(P);
P=P->leftchild;
}
else
{
S.pop();
cout<<p->data<<endl;
P=P->rightchild;
}
}
}
- 数据结构(C实现)------- 遍历二叉树
- 数据结构C语言二叉树的遍历
- 数据结构-C:二叉树的遍历
- 数据结构的C实现_二叉树的非递归遍历和层序遍历
- C语言数据结构实现二叉树递归与非递归遍历(数据结构第四次实验)
- 数据结构--二叉树遍历 C++实现
- 数据结构--二叉树遍历非递归实现
- 数据结构 c语言实现 二叉树的层次遍历(linux下实现)
- c++实现数据结构的二叉树及其遍历二叉树
- 二叉树遍历 - 数据结构
- 数据结构 二叉树遍历
- 数据结构 - 二叉树遍历
- 二叉树遍历 - 数据结构
- 数据结构--二叉树遍历
- 【数据结构】二叉树遍历
- 数据结构-二叉树遍历
- 数据结构--遍历二叉树
- 数据结构二叉树遍历
- dip和px相互转换的工具类
- 从xml读写中文数据时乱码问题
- 钟表维修管理系统技术解析(七) 保修记录、条件分页查询
- 快速解决低版本Xcode不支持高版本iOS真机调试问题
- OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui
- 数据结构--二叉树遍历 C++实现
- 可以使用框架但千万不要依赖框架
- 《Java编程思想》学习笔记3——内部类
- #ifdef 如何实现“与或”
- adobe ae cs6中文版汉化(11.02)win版汉化安装教程
- 配置虚拟机支持USB设备的热插拔
- Adventurous Driving - POJ 2679 最短路+负环
- Linux文件的默认权限与查找命令详解
- 取千位,百位,十位,个位