1.先序遍历

要点
⑴ 访问根结点;
⑵ 遍历左子树;
⑶ 遍历右子树。

  1. 例子:如下图,先序遍历方式结果输出为:ABDECF


    代码实现(递归版):

    void preOrder1(BinTree *root)     //递归前序遍历 {if(root!=NULL){cout<<root->data<<" ";preOrder1(root->lchild);preOrder1(root->rchild);}}
    

    非递归版:算法流程: 根据前序遍历访问的顺序,优先访问根结点,然后再分别访问左孩子和右孩子。即对于任一结点,其可看做是根结点,因此可以直接访问,访问完之后,若其左孩子不为空,按相同规则访问它的左子树;当访问其左子树时,再访问它的右子树。因此其处理过程如下:

    对于任一结点P:

    1)访问结点P,并将结点P入栈;

    2)判断结点P的左孩子是否为空,若为空,则取栈顶结点并进行出栈操作,并将栈顶结点的右孩子置为当前的结点P,循环至1);若不为空,则将P的左孩子置为当前的结点P;

    3)直到P为NULL并且栈为空,则遍历结束。

    void preOrder2(BinTree *root)     //非递归前序遍历
    {stack<BinTree*> s;BinTree *p=root;while(p!=NULL||!s.empty()){while(p!=NULL){cout<<p->data<<" ";s.push(p);p=p->lchild;}if(!s.empty()){p=s.top();s.pop();p=p->rchild;}}
    }
    

参考链接:二叉树的遍历

                       2016/5/17 23:10:24

二叉树的先序遍历(源代码)相关推荐

  1. SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列

    SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列 题目 输入 输出 样例输入 样例输出 源代码 题目 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二 ...

  2. 刻意练习:LeetCode实战 -- 二叉树的后序遍历

    背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...

  3. 二叉树的先序遍历(非递归)

    虽然递归简单理解,但是用递归内存开销大,耗时长,性能往往不如非递归方式 所以这里通过栈,用非递归方法实现二叉树的先序遍历 二叉树的存储结构定义: typedef struct node{int dat ...

  4. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java

    <LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...

  5. 树结构练习——排序二叉树的中序遍历(二叉搜索树)

    树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每 ...

  6. 1.二叉树的中序遍历

    题目:给出一棵二叉树,返回其中序遍历 /** * Definition of TreeNode:  * class TreeNode {  * public:  *     int val;  *   ...

  7. [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历

    Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...

  8. LeetCode-二叉树-94. 二叉树的中序遍历

    描述 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root ...

  9. 树结构练习——排序二叉树的中序遍历

    树结构练习--排序二叉树的中序遍历 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的 ...

  10. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

最新文章

  1. Facebook :AI 年度总结来啦
  2. Linux使用单用户模式修改root密码.
  3. android自定义弹框效果合集,android 自定义弹出框AlertDialog ,很炫的哦
  4. 带android小绿人的屏保相册,盘点:那些年我们追过的Android
  5. ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper
  6. 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
  7. 密度图的密度估计_不同类型的二维密度图小教程
  8. Altium的原理图主题修改为Orcad的默认样式(Altium原理图样式更改)
  9. 小黑框运行java_初探Java类加载机制
  10. telnet服务器响应慢,交换机s10508 telnet登录后上反应慢
  11. rsync工具介绍,rsync常用选项,rsync通过ssh同步
  12. Python 操作快捷键
  13. 第三方支付系统简易版支付系统部署
  14. Cadence软件盗版
  15. 计算机在材料化学中的应用大纲,材料化学-《材料研究方法》课程教学大纲
  16. 新GRE佛教词汇表wordlist1 词源
  17. npm list 报错 extraneous
  18. java开发实战经典(第二版)P528 14-2
  19. 【判断题】【简答题】【数据库原理】
  20. 掌握5大技巧,变身Istio 达人!

热门文章

  1. GameJam线下48小时极限游戏开发体验
  2. Linux下的gedit复制粘贴问题
  3. Stata新命令:readWind-快速读入并转换万德数据
  4. RFID-MFRC522射频识别模块,S50卡M1
  5. 【贺图】子兮祝您2015年新春快乐!
  6. 教师节HTML祝福网页,教师节祝福信息模板
  7. 关于视频的YUV格式介绍
  8. 【python】使用pip安装指定版本的模块,卸载、查看、更新包
  9. python编辑器windows_windows下sublime Text 3 做Python编辑器 详细配置
  10. cesium图层管理