二叉树的递归与非递归
要求:给定一个二叉树序列,要求以递归与非递归的形式先序输出。
#include<iostream>
#include<stack>
using namespace std;
typedef struct BTNode
{char ch;struct BTNode *lchild;struct BTNode *rchild;}BTNode,*pBTNode;
void create_Bt(pBTNode &root)//用引用更加直观
{char ch=getchar();if(ch==' ')root=NULL;else{root=new BTNode;root->ch=ch;create_Bt(root->lchild);create_Bt(root->rchild);}
}
//递归先序遍历
void pre(pBTNode root)
{if(root!=NULL){cout<<root->ch<<' ';pre(root->lchild);pre(root->rchild);}
}
//非递归先序遍历
void pre_(pBTNode root)
{stack<pBTNode> s;while(root!=NULL||!s.empty())//递归化非递归关键用循环和自定义栈来控制递归的结束{if(root!=NULL){s.push(root);cout<<root->ch<<' ';root=root->lchild;}else{root=s.top();s.pop();root=root->rchild;}}
}
void main()
{pBTNode root;cout<<"请输入一个二叉树序列"<<endl;create_Bt(root);pre(root);cout<<endl;pre_(root);
}
程序运行结果如下:
转载于:https://www.cnblogs.com/hainange/p/6334082.html
二叉树的递归与非递归相关推荐
- 二叉树的几种递归和非递归式遍历:
二叉树的几种递归和非递归式遍历: 1 #include <fstream> 2 #include <iostream> 3 4 using namespace std; 5 6 ...
- 分别用递归和非递归方式实现二叉树先序、中序和后序遍历(java实现)
分别用递归和非递归方式实现二叉树先序.中序和后序遍历 用递归和非递归方式,分别按照二叉树先序.中序和后序打印所有的节点.我们约定:先序遍历顺序 为根.左.右;中序遍历顺序为左.根.右;后序遍历顺序为左 ...
- 树与二叉树的深度优先与广度优先算法(递归与非递归)
本博客前面文章已对树与二叉树有过简单的介绍,本文主要是重点介绍有关二叉树的一些具体操作与应用 阅读本文前,可以先参考本博客 各种基本算法实现小结(三)-- 树与二叉树 和 各种基本算法实现小结( ...
- 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)
二叉树的前中后和层序遍历详细图解(递归和非递归写法) Monster_ii 2018-08-27 17:01:53 50530 收藏 403 分类专栏: 数据结构拾遗 文章标签: 二叉树 前序 中序 ...
- 九十五、二叉树的递归和非递归的遍历算法模板
@Author:Runsen 刷Leetcode,需要知道一定的算法模板,本次先总结下二叉树的递归和非递归的遍历算法模板. 二叉树的四种遍历方式,前中后加上层序遍历.对于二叉树的前中后层序遍历,每种遍 ...
- 二叉树层序遍历递归与非递归_二叉树基础(1)-构建和遍历(递归和非递归)...
二叉树的构建有2种方式:1.直接输入数字.2.根据两种顺序来判断另外一中顺序(后面会提到) 这里分享第一种构建方式,二叉树的前中后三种遍历方式(递归和非递归版本),和二叉树的层次遍历. 见代码demo ...
- 二叉树的遍历(递归,非递归,Morris)
二叉树的遍历 目录 递归遍历 非递归遍历 Morris遍历 1. 递归遍历 递归版遍历只要当前节点不为null,就可以三次回到当前节点. public static void preOrderRecu ...
- 二叉树的遍历:先序 中序 后序遍历的递归与非递归实现及层序遍历
二叉树的定义:一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树 树节点的定义如下: // 树(节点)定义 struct TreeNode {int data; // 值TreeNode* l ...
- 左神算法:分别用递归和非递归方式实现二叉树先序、中序和后序遍历(Java版)
本题来自左神<程序员代码面试指南>"分别用递归和非递归方式实现二叉树先序.中序和后序遍历"题目. 题目 用递归和非递归方式,分别按照二叉树先序.中序和后序打印所有的节点 ...
- 二叉树(2)——遍历的非递归实现
2019独角兽企业重金招聘Python工程师标准>>> 算法概述 递归算法简洁明了.可读性好,但与非递归算法相比要消耗更多的时间和存储空间.为提高效率,我们可采用一种非递归的二叉树遍 ...
最新文章
- 工作小记(三)----说说北京生活的乐趣
- kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF
- feign获取outstream_Spring Cloud Feign接口返回流
- html input 字体颜色_html 元素参考整合实用收藏!前端web工程师必备!
- 记录一次游戏服务器的压测调优记录(Golang语言)
- java 线程 handler,java.lang.RuntimeException:处理程序(android.os.Handler)在死线程上向处理程序发送消息...
- Hbase体系架构与安装
- python做性能测试_Python做性能测试-1、Locust基础篇
- hibernate java.util.date 精度_hibernate中java.util.Date类型映射
- 联想网络同传系统用户手册(联想EDU应用用户手册)[联想硬盘保护,联想网络控制工具]
- java开发16g内存够吗_Java 内存模型 ,一篇就够了!
- java json转excel_JSON转EXCEL代码( java)
- dedecms如何制作中英文切换的网站?
- nginx+fastdfs 502异常解决
- 关于印发《计算机技术与软件专业技术资格(水平)考试暂行规定》
- directadmin支持多php,DirectAdmin升级PHP版本
- 也说说ADC以及ADC的主要技术参数及分类介绍
- 关于内存泄漏和内存溢出
- 作为学科的计算机科学(COMPUTING AS A DISCIPLINE)
- Log4j 爆发“核弹级”漏洞、工信部力推开源软件发展、“龙腾计划”启动|开源月报 Vol. 02...
热门文章
- 关于css3的背景切割(background-clip)、背景原点(background-origin)的使用
- 怎样读取html控件(如文本框)的值
- (转)GridView固定表头
- Silverlight 操作Excel 中的进程资源释放问题(续)
- pandas中dataframe的索引问题
- angular 个人零点学习
- Java从0开始之Java环境搭建
- bzoj3631: [JLOI2014]松鼠的新家(LCA+差分)
- C#实现不安装Oracle客户端访问远程服务器数据
- 外卖小哥到底是一群什么样的人?答案超乎你想象