当前位置: 首页 > news >正文

【数据结构】二叉树(遍历,递归)

 🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343
🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482

9efbcbc3d25747719da38c01b3fa9b4f.gif​​​

目录

二叉树遍历规则

前序遍历

中序遍历

 后序遍历

递归结构遍历

前序

中序

 求节点个数

求叶子节点个数

 求树的高度

求第k层节点个数


 

   前言

    💬 hello! 各位铁子们大家好哇。

             今日更新了树的遍历,递归的相关内容
    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

 

 

二叉树遍历规则

 96d32642d8a84c4ebf74196ef008bbcd.png

前序遍历

b28f36f85639469fadbe096c03fa4a4a.png

注意:N代表空

分析:根据前序遍历的规则(根左右),先访问根1,然后左子树2,2的左子树3,3的左子树是N,右子树也是N,然后返回到2的右子树N,然后返回到1的右子树4,接着是4的左子树5,5的左右子树都是N,然后返回到4的右子树6,6的左右子树都是N。

中序遍历

09e83b933bc94d548cd26a671eeb44ba.png

分析:根据规则(左根右),1的左子树2,2的左子树3,3的左子树N,起始即为N,接着是根3,接着是3的右子树N,返回到根2,然后是2的右子树N,返回到根1,接着是1的右子树,以此类推。

 后序遍历

3c98f79128c14fff912af81648b28e2a.png

分析:过程变为左右根,其实质与前面两种一样。

递归结构遍历

b2facb22c58d4d609ca6fbd66e6b99ed.png

上图是要遍历的树的模型。 

前序

假设树已构建好,下图是前序遍历的函数,执行后即可得到前序遍历的结果。

81509a0a105c4d41b89705dbb81b6c66.png

 下图是递归的流程图:

a26ea1dfd4b24b27a32db0fed03a5494.png

 

分析:开始先打印根1,然后递归调用根2,以此类推到3的左子树N。此时左子树遍历完,返回到3的右子树,每次调用完就返回到上一层的函数中。

9c841bd49bbe46499c8ef0b2595e2a51.png

上图是递归调用占用的大致空间,每次调用完函数,返回到上一层,上一层接着调用,就会重复利用之前销毁的空间,如果空间不足,能用多少是多少。因此,递归的空间复杂度是看递归的深度。 

中序

9023cdf60a0346c488a9fa4c9b53e825.png

上图是中序遍历的函数,递归过程参考前序遍历过程。

后序遍历大致过程也同上,这里就不再写出。

 求节点个数

d4b0a845cfef4a39a76d1a05a896f7b0.png

递归过程图如下:

bcfc8cac340642e287068a69d1d65328.png 

分析:如果根结点为空,则返回0。此递归过程会先找出左子树的节点个数,当遇到空节点时就返回0,然后加上根结点自身数量1,返回到上一层,以此类推。

求叶子节点个数

d288d9fa895f42e4bd3b222a0efa4752.png 参考前面的递归过程理解。

 

 求树的高度

a3ea9e5f2dcc4eceb4845b07cc2f1106.png

求第k层节点个数

6d8b92852b064615ad96fd1eca9f8b2c.png 

分析:k-1目的是当到达第k层后,直接返回1到上一层 

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cd3jqfe6fwg0

 

相关文章:

  • 【LeetCode】206. 反转链表
  • Python GUI库大汇总
  • Keil 的安装
  • Spring IOC原理
  • 【协议】XMLHttpRequest的梳理和总结
  • 高并发大游戏如何选择阿里云服务器配置?
  • MySQL窗口函数(MySQL Window Functions)
  • 安全审查常见要求
  • 橘子学Mybatis07之Mybatis关于缓存的设计
  • 【计算机硬件】2、指令系统、存储系统和缓存
  • 力扣(144. 二叉树的前序遍历94.二叉树的中序遍历145. 二叉树的后序遍历)
  • 阿里云国外服务器价格表
  • OSI七层协议和五层协议
  • 美颜技术对比:如何根据项目选择不同的美颜SDK?
  • Win10恢复环境是什么?
  • Blender——将模型及其所有纹理与材质导入unity
  • [Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码
  • 怎么修改或移除WordPress后台仪表盘概览底部的版权信息和主题信息?
  • What is `HttpServletRequestWrapper` does?
  • Mac ❀ 如何在MacOS上安装pip软件包
  • 泽连斯基启程前往土耳其
  • 国际能源署:全球电动汽车市场强劲增长,中国市场继续领跑
  • 上海市重大工程一季度开局良好,崇明线等按既定计划加快建设
  • 某博主遭勒索后自杀系自导自演,成都警方立案调查
  • 从600名外到跻身大满贯,孙发京:走过的路成就了现在的我
  • 火车站员工迟到,致出站门未及时开启乘客被困?铁路部门致歉