数据结构(六)二叉树的遍历(递归非递归方法)

一、递归方法

1.先序遍历

void PreOrder(BiTree T)
{visit(T);PreOrder(T->LChild)PreOrder(T->RChild)
}

2.先序遍历

void PreOrder(BiTree T)
{PreOrder(T->LChild)visit(T);PreOrder(T->RChild)
}

3.先序遍历

void PreOrder(BiTree T)
{PreOrder(T->LChild)PreOrder(T->RChild)visit(T);
}

二、非递归方法

非递归的方法我们主要采用栈的方法,先进后出

1.中序遍历

void MidSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){p.push(T);T = T->lchild;}else{T = p.top();cout << T->data << "\t";p.pop();T = T->rchild;}}}

2.先序遍历


//前序遍历(非递归)void PreSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){cout << T->data << "\t";p.push(T);T = T->lchild;}else{T= p.top();p.pop();T = T->rchild;}}
}

3.后序遍历

后序遍历相对于前中序遍历要麻烦一些

BitTNode* r = NULL;//标记位置
//后序遍历(非递归)
void PostSearch01(BiTree T)
{stack<BitTNode*> p;while (T || !p.empty()){if (T){p.push(T);T = T->lchild;}else{T = p.top();if (T->rchild && T->rchild != r){T = T->rchild;p.push(T);T = T->lchild;}else{p.pop();cout << T->data << "\t";r = T;T = NULL;}}}}

4.层次遍历


//层次遍历
void LevelOrder(BiTree T)
{queue<BitTNode*> q;q.push(T);while (!q.empty()){T = q.front();q.pop();cout << T->data << "\t";if (T->lchild != NULL){q.push(T->lchild);}if (T->rchild != NULL){q.push(T->rchild);}}}

数据结构(六)二叉树的遍历(递归非递归方法)相关推荐

  1. 数据结构(七)图的遍历(递归非递归方法)

    图的遍历(递归非递归方法) #include<iostream> #include<stdio.h> #include<stack> #include<que ...

  2. 二叉树的遍历-递归与非递归 - 海子

    二叉树的遍历-递归与非递归 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方 ...

  3. 二叉树的遍历(非递归)整理

    二叉树的遍历(非递归) 写在前面 二叉树重要,重要,重要.以下代码每日手撸一遍,深刻理解. 二叉树的先序遍历(非递归) 巧记心法 判断是否为空树 1.右侧入栈(访问,q指向右孩子,不空则入栈) 2.p ...

  4. 二叉树深度优先遍历(非递归)

    二叉树深度优先遍历(非递归) 1. 先序遍历非递归化 从根结点开始入栈一个元素 不停的执行以下操作: 如果栈不空,就出栈一个元素,并对其进行访问,并访问其左右孩子 若左右孩子存在,则依次入栈,右孩子先 ...

  5. 二叉树前序遍历(递归法和迭代法(即非递归法))——C++

    声明:本文原题主要来自力扣力扣,记录此博客主要是为自己学习总结,不做任何商业等活动 本文主要讲解二叉树的前序遍历递归法和迭代法.中序遍历和后序遍历可以参考博主下面两篇博客:二叉树中序遍历(递归法和迭代 ...

  6. 二叉树的前序遍历、中序遍历、后序遍历(递归+非递归实现)

    目录 前序遍历 递归实现 非递归实现 中序遍历 递归实现 递归实现 后序遍历 递归实现 非递归实现 二叉树是一种非常经典的数据结构,它的应用途径十分广泛,但同时它也是一种简单的.易理解的数据结构,解决 ...

  7. 二叉树的遍历(递归与非递归)

    class Node: # 定义树节点def __init__(self, value, left=None, right=None): # 节点的值及左子树.右子树self.value = valu ...

  8. 二叉树层序遍历递归与非递归_总结归纳:二叉树遍历【递归 amp;amp; 非递归】...

    今天为大家总结了二叉树前中后序遍历的递归与迭代解法: 1. 前序遍历 递归 List list=new ArrayList<>();public ListpreOrder(TreeNode ...

  9. 二叉树前中后层遍历(递归/非递归)(简单易懂(*^ー^))

    文章目录 二叉树的遍历 1 先序遍历 1.1 递归 1.2 非递归 2 中序遍历 2.1 递归 2.2 非递归 3 后序遍历 3.1 递归 3.2 非递归 4 层序遍历 5 前中后层序完整可运行代码( ...

最新文章

  1. 大厂前端高频面试问题与答案精选
  2. CentOS6 安装并破解Jira 7
  3. oracle 附加日志 挂起,Oracle 附加日志(supplemental log)
  4. 五.几何对象和空间参考
  5. 设计模式的C语言应用-适配及系列模式-第六章
  6. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp
  7. 【转】粒子群算法----粒子群算法简介
  8. 第九天 面试失败了。。。。
  9. webpack配置时:Plugin/Preset files are not allowed to export objects, only functions.
  10. 有量纲和无量纲是什么意思_为什么无线通信需要同步?
  11. 子在川上曰:nginx的安装和配置、node服务器的配置、mongdb的安装、pm2进行项目动态管理
  12. 家庭影院是什么?为什么选择家庭影院?
  13. 查看服务器ip配置信息,怎么查看服务器ip地址,怎么查看ip地址和端口
  14. cidaemon.exe进程cpu使用率100%
  15. 3.10 Ctrl+A快捷键在表格中的使用 [原创Excel教程]
  16. flask中flash(闪现)的使用
  17. 9139 位艺人在 Python 面前不值一提 # Python 爬虫小课 5-9
  18. 【教学类-23-01】20221217《不会写学号的中班幼儿的学号描字贴》(中班描字)
  19. 详解ZStack高级功能--裸金属服务
  20. 解决七牛云链接失效以及批量下载图片并迁移阿里云 OSS

热门文章

  1. SharePoint 2013 开发——其他社交功能
  2. 【SQL】sql版Split函数。用于拆分字符串为单列表格
  3. asp.net mvc使用的心得和问题的解决方法(陆续更新ing)
  4. python处理字符串数组慢_Python字符串处理 - str/bytes
  5. python爬虫requests实战_Python爬虫之requests库网络爬取简单实战
  6. Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程
  7. three.js制作3d模型工具_3D打印模型打磨抛光常用工具
  8. 小学计算机技术指导纲要,《中小学信息技术课程指导纲要(试行)》
  9. linux db2sysc 内存,db2sysc进程占用linux内存持续增长,请各位指点。
  10. Erwin 生成 mysql 带注释(comment )的脚本