一、之前写了二叉树的三种遍历方法:有先序遍历、中序遍历、后序遍历,这三种方法都是用递归的方式来遍历二叉树的。层序遍历则不是使用递归来遍历,而是使用队列的来实现遍历:

void LevelTreeOrder(BTNode* root)
{Queue q;QueueInit(&q);if(root)QUueuePush(&q,root);while(!EmptyQueue(&q))
{BTNode* front = QueueFront(&q);printf("%d ",front->data);QueuePop(&q);if(front->left)QueuePush(&q,front->left);if(front->right)QueuePush(&q,front->right);
}printf("\n");QueueDestroy(&q);
}

代码就是如上所示,前提是你要有一个写好的队列的代码。

二、我们可以使用层序遍历来判断完全二叉树

借助于上面的写好的层序遍历,我们可以写出

void isTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);if(root)QUueuePush(&q,root);while(!EmptyQueue(&q))
{BTNode* front = QueueFront(&q);QueuePop(&q);if(front==NULL)break;else{QueuePush(front->left);QueuePush(front->right);}
}while(!EmptyQueue(&q))
{BTNode* front = QueueFront(&q);QueuePop(&q);if(front){QueueDestroy(&q);return false;}}
QueueDestroy(&q);
return true;
}

三、判断所给的树是不是对称的树

题目要求给你一棵树,需要你判断是不是一颗对称的树:

bool _isSymmetric(struct TreeNode* root1,struct TreeNode* root2){if(root1 == NULL &&root2==NULL)return true;if(root1 == NULL || root2 ==NULL )return false;if(root1->val != root2->val)return false;return _isSymmetric(root1->left,root2->right)&&_isSymmetric(root1->right,root2->left);
}
bool isSymmetric(struct TreeNode* root){return !root || _isSymmetric(root->left,root->right);
}

和之前写的isSameTree的思路还是很像的;

二叉树的遍历——层序遍历相关推荐

  1. 数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次

    原题链接:oj3344 数据结构实验之二叉树五:层序遍历 Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. In ...

  2. tree traversal (树的遍历) - 层序遍历 (level order traversal) - 二叉树的层序遍历

    tree traversal (树的遍历) - 层序遍历 (level order traversal) - 二叉树的层序遍历 1. tree traversal (树的遍历) 1.1 深度优先搜索 ...

  3. 3344 数据结构实验之二叉树五:层序遍历

    数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 已知一个按先序输入的字符序列,如abd,,e ...

  4. bartender一行打印两个二次开发_C++ 智能指针和二叉树:图解层序遍历和逐层打印二叉树...

    作者:apocelipes  链接:https://www.cnblogs.com/apocelipes/p/10758692.html 二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不 ...

  5. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)

    Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1 ...

  6. LeetCode 297. 二叉树的序列化与反序列化(前序遍历层序遍历)

    文章目录 1. 题目 2. 解题 2.1 前序遍历 2.2 层序遍历 1. 题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过 ...

  7. 二叉树三种递归和非递归遍历 层序遍历

    以下为二叉树的三种遍历(中序,先序,后序)源码,和非递归遍历源码.  中序 递归遍历 public static void inorderTraversal(TreeNode root) {if(ro ...

  8. BFS(二)二叉树层序遍历(I、II)、二叉树锯齿形层序遍历、N叉树层序遍历

    目录 102. 二叉树的层序遍历 107. 二叉树的层序遍历 II 103. 二叉树的锯齿形层序遍历 429. N 叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节 ...

  9. JAVA 二叉树 常见操作合集(前中后序递归非递归遍历 层序遍历 求深度宽度 判断兄弟结点 堂兄弟节点)

    今天复习了二叉树的相关操作,整理归纳如下. 二叉树结点定义 //节点类private static class TreeNode{private int val = 0;private TreeNod ...

最新文章

  1. 能上qq打不开网页,金山毒霸帮你解决
  2. javascript:void(0)与#区别
  3. 在asp.net中使用加密数据库联接字符串
  4. linux基础(1)-yum源配置
  5. arm汇编解析—qnnpack卷积实现
  6. 微服务升级_SpringCloud Alibaba工作笔记0016---Nacos之服务提供者注册
  7. 钩子编程(HOOK) 安装进程内键盘钩子 (1)
  8. Mysql5.6 自动化部署
  9. 解决办法:error: ‘unordered_map’ in namespace ‘std’ does not name a template type
  10. 计算机c盘要满了电脑会卡吗,C盘满了 电脑卡顿了,怎么清理空间
  11. 深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
  12. C++ 二叉树求叶子结点数及输出叶子结点的路径
  13. 直线检测-Radon变换、Hough变换
  14. java jbutton icon 边框_Swing开发JButton图标效果篇
  15. 如何让自己每天按时睡觉
  16. 边写SQL边学数据库入门实验2(持续更新)
  17. 从Windows用scp往linux里传输文件
  18. 零点定理的奇妙应用:平分面积的直线
  19. 【全文检索_01】核心理论
  20. 2023年十大流媒体发展趋势展望

热门文章

  1. windows电脑重装系统步骤、cmd常用命令等
  2. 一次性消费品商城小程序开发,生活更便捷
  3. 真正好用的mac版免费OCR文字识别转换工具
  4. java压缩文件,在线下载文件并压缩
  5. 多商户商城系统-v2.2.3版本发布
  6. 《构建之法》学习总结2——软件工程需求分析
  7. 脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest
  8. 【0基础学java】教学日志:javaSE-面向对象6-面向对象前4章上机作业点评,主要涉及继承、封装、多态三个章节的内容
  9. 带您了解如何做好新媒体营销推广
  10. Python利用SMTP/IMTP制作简单邮件(QQ邮箱)发送程序(保姆级)