二叉树遍历

函数接口定义:

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;
}

二叉树遍历/先序输出叶子结点相关推荐

  1. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  2. 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历

    前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...

  3. 6-8 先序输出叶结点 (15 分)

    ** 6-8 先序输出叶结点 (15 分) ** 本题要求按照先序遍历的顺序输出给定二叉树的叶结点. 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其 ...

  4. PTA4-11 先序输出叶结点

    4-11 先序输出叶结点   (15分) 本题要求按照先序遍历的顺序输出给定二叉树的叶结点. 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其中Bin ...

  5. 二叉树遍历——先序遍历

    二叉树遍历--先序遍历 遍历顺序如下图:依次遍历左孩子,到头了就转向右孩子 #include<iostream> #include<stack> using namespace ...

  6. 二叉树遍历之中序遍历

    二叉树遍历之中序遍历 二叉树的中序遍历与深度优先搜索很类似,对于深度优先算法,我们使用栈(Stack),广度优先搜索使用队列(Queue).二叉树的中序遍历遵循三个步骤 遍历左树 访问根节点 遍历右数 ...

  7. 二叉树遍历之中序遍历算法(非递归、递归)入门详解

    一.引言 二叉树的遍历常见的方法有先序遍历.中序遍历.后序遍历和层次遍历等,本文给出了C语言版本的中序遍历二叉树的非递归算法和递归算法. 中序遍历的原理很简单,也就是把树根的访问放在中间.访问结点的次 ...

  8. 二叉树遍历之后序遍历(非递归、递归)入门详解

    一.引言 二叉树的遍历常见的方法有先序遍历.中序遍历.后序遍历和层次遍历等,本文给出了C语言版本的后序遍历二叉树的非递归算法和递归算法. 后序遍历不如先序遍历简单,是相对最复杂的一种遍历方法.访问结点 ...

  9. 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)

    叶子结点就是没有孩子结点,所以当当前根结点没有孩子结点的时候,就返回1,就是找到一个叶子结点,然后访问完每个不为空的结点就行,每次访问都是把当前结点的左/右结点作为新的结点,来判断. 求最大深度,也就 ...

最新文章

  1. 不焦虑、不内卷能拿图灵奖吗?来自智源研究院的灵魂拷问
  2. BZOJ 4514 费用流
  3. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付
  4. ES6-10 super、4种遍历方式、原型、symbol遍历
  5. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
  6. java 扩展接口_详解常用的Spring Bean扩展接口
  7. html里球是哪个单词,html tag是什么意思
  8. map和foreach的区别和应用场景_说说session和cookie区别与主要应用场景,localStorage的特点...
  9. 如何在Ubuntu中修改默认程序
  10. 【grpc】[Python] A file with this name is already in the pool
  11. php 数值相加_php – 合并2个数组并求值(数值键)
  12. Express框架的请求处理~非常详细
  13. 图像处理实战-Python编程进阶
  14. MySQL表中插入中文数据时出错
  15. 【NIO系列】——之Netty
  16. C语言:输出100以内的素数
  17. 海康威视NVR硬盘录像机DS-7808N安装调试教程,监控系统安装教程
  18. 群晖6.2开启shr格式
  19. 微信小程序:点marker,线polyline,面polygons的渲染
  20. 科学家发现超时空传输能量的方法

热门文章

  1. 解决微信内置网页无法上传图片的问题
  2. 关于SDL多指触屏事件获取各手指状态的问题。
  3. 《C++ Primer》2.1 基本内置类型
  4. 基于ThreadLocal的日期工具类
  5. ios nslog 例子_IOS 打印 NSlog 使用
  6. java redis缓存清除_Spring Cache手动清理Redis缓存
  7. DM数据迁移工具使用
  8. 畅谈自然语言处理——初识NLP技术
  9. 【本人秃顶程序员】好好讲一讲:到底什么是Java架构师——《架构师的自我修养》
  10. chrome中过滤广告的插件ADblock的安装