二叉树的先序遍历(源代码)
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
二叉树的先序遍历(源代码)相关推荐
- SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列
SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列 题目 输入 输出 样例输入 样例输出 源代码 题目 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二 ...
- 刻意练习:LeetCode实战 -- 二叉树的后序遍历
背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...
- 二叉树的先序遍历(非递归)
虽然递归简单理解,但是用递归内存开销大,耗时长,性能往往不如非递归方式 所以这里通过栈,用非递归方法实现二叉树的先序遍历 二叉树的存储结构定义: typedef struct node{int dat ...
- 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java
<LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...
- 树结构练习——排序二叉树的中序遍历(二叉搜索树)
树结构练习--排序二叉树的中序遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每 ...
- 1.二叉树的中序遍历
题目:给出一棵二叉树,返回其中序遍历 /** * Definition of TreeNode: * class TreeNode { * public: * int val; * ...
- [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...
- LeetCode-二叉树-94. 二叉树的中序遍历
描述 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root ...
- 树结构练习——排序二叉树的中序遍历
树结构练习--排序二叉树的中序遍历 Description 在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是--(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的 ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
最新文章
- Facebook :AI 年度总结来啦
- Linux使用单用户模式修改root密码.
- android自定义弹框效果合集,android 自定义弹出框AlertDialog ,很炫的哦
- 带android小绿人的屏保相册,盘点:那些年我们追过的Android
- ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- 密度图的密度估计_不同类型的二维密度图小教程
- Altium的原理图主题修改为Orcad的默认样式(Altium原理图样式更改)
- 小黑框运行java_初探Java类加载机制
- telnet服务器响应慢,交换机s10508 telnet登录后上反应慢
- rsync工具介绍,rsync常用选项,rsync通过ssh同步
- Python 操作快捷键
- 第三方支付系统简易版支付系统部署
- Cadence软件盗版
- 计算机在材料化学中的应用大纲,材料化学-《材料研究方法》课程教学大纲
- 新GRE佛教词汇表wordlist1 词源
- npm list 报错 extraneous
- java开发实战经典(第二版)P528 14-2
- 【判断题】【简答题】【数据库原理】
- 掌握5大技巧,变身Istio 达人!