编写非递归算法实现二叉树的中序遍历
题目要求:编写非递归算法实现二叉树的中序遍历。
遍历代码:
void InOrderTraverseNR(BiTree T) {SqStack stack;InitStack(&stack);Push(&stack,T);while(!StackEmpty(stack)){ BiTree p;while(GetTop(stack,&p)&&p)Push(&stack,p->lchild);Pop(&stack,&p);if(!StackEmpty(stack)){Pop(&stack,&p);printf("%c",p->data);Push(&stack,p->rchild);}} }
完整程序
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 typedef struct BiTNode {char data;struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; typedef struct {BiTree data[MAXSIZE];int top; }SqStack; void InitStack(SqStack *S) { S->top=-1; } int GetTop(SqStack S,BiTree *e) {if(S.top==-1)return 0;else*e=S.data[S.top]; return 1; } int Push(SqStack *S,BiTree e) {if(S->top==MAXSIZE-1)return 0;S->top++; S->data[S->top]=e;return 1; } void Pop(SqStack *S,BiTree *e) { if(S->top==-1)return;*e=S->data[S->top];S->top--; } int StackEmpty(SqStack S) { if (S.top==-1)return 1;elsereturn 0; } //前序递归建立一棵二叉树 void CreateBiTree(BiTree *T) {char ch;scanf("%c",&ch);if(ch=='#') *T=NULL;else{*T=(BiTree)malloc(sizeof(BiTNode));if(!*T)return;(*T)->data=ch; CreateBiTree(&(*T)->lchild);CreateBiTree(&(*T)->rchild);} } //二叉树的非递归中序遍历 void InOrderTraverseNR(BiTree T) {SqStack stack;InitStack(&stack);Push(&stack,T);while(!StackEmpty(stack)){ BiTree p;while(GetTop(stack,&p)&&p)Push(&stack,p->lchild);Pop(&stack,&p);if(!StackEmpty(stack)){Pop(&stack,&p);printf("%c",p->data);Push(&stack,p->rchild);}} } int main() {BiTree T;printf("按照前序序列构造一棵二叉树:");CreateBiTree(&T);//ABD##E##CF##G##printf("中序非递归遍历结果:");InOrderTraverseNR(T); //DBEAFCG }
编写非递归算法实现二叉树的中序遍历相关推荐
- 利用非递归方法实现二叉树的中序遍历
#include<iostream> #include<stack> #define N 7 using namespace std;typedef struct node { ...
- 二叉树的中序遍历 递归与非递归
94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [ ...
- 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...
- 编写非递归算法实现二叉树的前序遍历
题目要求:编写非递归算法实现二叉树的前序遍历. 遍历代码 void PreOrderTraverseNR(BiTree T) {SqStack stack;InitStack(&stack); ...
- lintcode:二叉树的中序遍历
题目: 二叉树的中序遍历 给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1\2/3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 解题: 程序直接来源 Java ...
- 15 二叉树的中序遍历(Binary Tree Inorder Traversal)
文章目录 1 题目 2 描述 3 解决方案 3.1 递归算法 3.1.1 遍历法(Traverse) 思路 源码 3.1.2 分治法(Devide And Conquer) 思路 源码 3.2 非递归 ...
- 94. 二叉树的中序遍历-M
94. 二叉树的中序遍历 label: 非递归中序遍历,LNR,字节跳动面试题 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1\2/3 输出: [1,3,2] 进阶 ...
- 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java
<LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
最新文章
- Blender写实建筑场景制作学习教程 Exterior Visualization in Blender 2.9
- 【基础篇】DatePickerDialog日期控件的基本使用(一)
- 我国机器视觉企业体量偏小,上游零部件占利润大头
- 英国激进新冠试验曝光:招募健康志愿者,故意感染病毒,每人补偿3万5
- 打造完美的JS树形菜单
- 移动端 UI 适配最佳实践(中)
- Web程序员的Mysql进阶序一之sql使用分类及基础
- 数据结构之树的存储结构
- 找到MVC框架中前端URL与后端同步的解决方案
- 父元素浮动子元素会浮动吗_为什么quot;overflow:hiddenquot;能清除浮动的影响
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEM...
- 动态提出的数据怎么换行 js_前端代码动态生成应用及改造
- WordPress主题Ripro子主题美化包wori-child 1.3+下载插件美化
- SQLyog数据库导出
- 恩格玛密码机的工作原理
- 修改网络设备在路由器中显示名称
- 京东手机评论文本挖掘与数据分析(Python)
- 各种蜂蜜功效大全(收藏)
- 编译祁大神的iguana,大神就是大神.
- 项管行知04--项目章程
热门文章
- 苹果7怎么开启位置服务器,iPhone7小白点如何开启?苹果iPhone7虚拟Home键开启设置方法图解...
- 【OpenGL学习笔记五】 索引缓冲对象EBO
- C语言%lld、%llu无法正常输出比long long长整数小的数
- 如何实现 Oracle 的自增序列,两步轻松搞定
- HttpWebRequest.Create
- v-distpicker的简单安装和使用 — 一款地区选择插件
- 【Altium designer】快捷键小技巧
- Java开源 Web开发框架
- 股指期货交易流程(股指期货交易规则详解)
- 我和 JSRUN 网站的一些故事