二叉树遍历/先序输出叶子结点
二叉树遍历
函数接口定义:
void InorderTraversal( BinTree BT );
void PreorderTraversal( BinTree BT );
void PostorderTraversal( BinTree BT );
void LevelorderTraversal( BinTree BT );
BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{ElementType Data;BinTree Left;BinTree Right;
};
前序遍历
递归:
void PreOrderTraversal(BinTree BT){if(BT){printf(" %c",BT->Data);PreorderTraversal(BT->Left);PreorderTraversal(BT->Right);}else return;
}
中序遍历
递归:
void InorderTraversal( BinTree BT ){if(BT){InorderTraversal(BT->Left);printf(" %c",BT->Data);InorderTraversal(BT->Right);}else return;
}
后序遍历
递归:
void PostorderTraversal( BinTree BT ){if(BT){PostorderTraversal(BT->Left);PostorderTraversal(BT->Right);printf(" %c",BT->Data);}else return;
}
层序遍历
非递归(数组方法):
void LevelorderTraversal( BinTree BT ){if(BT==NULL)return;int head=0,last=0;BinTree bintree[100];bintree[last++]=BT;while(head<last){BinTree b=bintree[head++];printf(" %c",b->Data);if(b->Left)bintree[last++]=b->Left;if(b->Right)bintree[last++]=b->Right;}
}
先序输出叶子结点
void PreorderPrintLeaves( BinTree BT ){if(BT){if(!BT->Left&&!BT->Right)printf(" %c",BT->Data);else{PreorderPrintLeaves(BT->Left);PreorderPrintLeaves(BT->Right);}}else return;
}
二叉树遍历/先序输出叶子结点相关推荐
- 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...
- 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历
前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...
- 6-8 先序输出叶结点 (15 分)
** 6-8 先序输出叶结点 (15 分) ** 本题要求按照先序遍历的顺序输出给定二叉树的叶结点. 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其 ...
- PTA4-11 先序输出叶结点
4-11 先序输出叶结点 (15分) 本题要求按照先序遍历的顺序输出给定二叉树的叶结点. 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其中Bin ...
- 二叉树遍历——先序遍历
二叉树遍历--先序遍历 遍历顺序如下图:依次遍历左孩子,到头了就转向右孩子 #include<iostream> #include<stack> using namespace ...
- 二叉树遍历之中序遍历
二叉树遍历之中序遍历 二叉树的中序遍历与深度优先搜索很类似,对于深度优先算法,我们使用栈(Stack),广度优先搜索使用队列(Queue).二叉树的中序遍历遵循三个步骤 遍历左树 访问根节点 遍历右数 ...
- 二叉树遍历之中序遍历算法(非递归、递归)入门详解
一.引言 二叉树的遍历常见的方法有先序遍历.中序遍历.后序遍历和层次遍历等,本文给出了C语言版本的中序遍历二叉树的非递归算法和递归算法. 中序遍历的原理很简单,也就是把树根的访问放在中间.访问结点的次 ...
- 二叉树遍历之后序遍历(非递归、递归)入门详解
一.引言 二叉树的遍历常见的方法有先序遍历.中序遍历.后序遍历和层次遍历等,本文给出了C语言版本的后序遍历二叉树的非递归算法和递归算法. 后序遍历不如先序遍历简单,是相对最复杂的一种遍历方法.访问结点 ...
- 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
叶子结点就是没有孩子结点,所以当当前根结点没有孩子结点的时候,就返回1,就是找到一个叶子结点,然后访问完每个不为空的结点就行,每次访问都是把当前结点的左/右结点作为新的结点,来判断. 求最大深度,也就 ...
最新文章
- 不焦虑、不内卷能拿图灵奖吗?来自智源研究院的灵魂拷问
- BZOJ 4514 费用流
- vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付
- ES6-10 super、4种遍历方式、原型、symbol遍历
- 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
- java 扩展接口_详解常用的Spring Bean扩展接口
- html里球是哪个单词,html tag是什么意思
- map和foreach的区别和应用场景_说说session和cookie区别与主要应用场景,localStorage的特点...
- 如何在Ubuntu中修改默认程序
- 【grpc】[Python] A file with this name is already in the pool
- php 数值相加_php – 合并2个数组并求值(数值键)
- Express框架的请求处理~非常详细
- 图像处理实战-Python编程进阶
- MySQL表中插入中文数据时出错
- 【NIO系列】——之Netty
- C语言:输出100以内的素数
- 海康威视NVR硬盘录像机DS-7808N安装调试教程,监控系统安装教程
- 群晖6.2开启shr格式
- 微信小程序:点marker,线polyline,面polygons的渲染
- 科学家发现超时空传输能量的方法