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

建网站空间网页设计3个页面

建网站空间,网页设计3个页面,兰溪网站,网站租服务器声明 该系列文章仅仅展示个人的解题思路和分析过程,并非一定是优质题解,重要的是通过分析和解决问题能让我们逐渐熟练和成长,从新手到大佬离不开一个磨练的过程,加油! 原题链接 翻转二叉树备战技术面试?…
声明

该系列文章仅仅展示个人的解题思路和分析过程,并非一定是优质题解,重要的是通过分析和解决问题能让我们逐渐熟练和成长,从新手到大佬离不开一个磨练的过程,加油!

原题链接

翻转二叉树备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/invert-binary-tree/

算法分析

        如下图1和图2可按照(1)、(2)、(3)、(4)的顺序依次对每个非叶子节点的左右孩子节点进行镜像反转,对于只有一个孩子节点的节点也要进行镜像反转操作。

图1

图2

        分析:

        1.如何完成镜像反转?

        可以通过递归遍历整棵树,遍历过程中按照以下方式进行判断和操作:

        (1)若当前节点为空或无左孩子和右孩子节点则return;

        (2)否则继续遍历左右孩子节点;

        (3)交换左右孩子节点;

        2.如何交换左右孩子节点?

        (1)左右孩子节点均不为空,则交换左右孩子节点;

        (2)左孩子节点为空&&右孩子节点不为空,则左孩子节点=右孩子节点,右孩子节点置空;

        (3)右孩子节点为空&&左孩子节点不为空,则右孩子节点=左孩子节点,左孩子节点置空.

代码示例(C#)
//翻转二叉树
public TreeNode MirrorTree(TreeNode root)
{if (root != null) Reverse(root);return root;
}//对以指定节点为根节点的二叉树进行镜像反转操作
private void Reverse(TreeNode node)
{//检测是否满足镜像反转要求if (node == null || (node.left == null && node.right == null)) return;if (node.left != null) Reverse(node.left);//对当前节点的左孩子节点进行镜像反转操作if (node.right != null) Reverse(node.right);//对当前节点的右孩子节点进行镜像反转操作SwapChildren(node);//交换当前节点的左右孩子节点
}//交换指定节点的左右孩子节点
private void SwapChildren(TreeNode node)
{if (node.left != null && node.right != null)(node.left, node.right) = (node.right, node.left);else if (node.left == null && node.right != null)(node.left, node.right) = (node.right, null);else if (node.left != null && node.right == null)(node.right, node.left) = (node.left, null);
}
算法解说

       根据题目要求我们需要对一个二叉树进行翻转操作,主方法的输入是该二叉树的根节点,返回值也是一个节点。实际上我们可以对问题进行细分,对二叉树的翻转实际上就是对二叉树节点的交换或者说是将每个节点的位置进行重新排序,有的节点的位置保持不变(如根节点),有的节点则需要与其它节点交换位置(如叶子节点等)。

       对问题进行转换后,我们自然需要对整个二叉树进行遍历,那么我们就需要搞清楚两个问题。

       1.什么时候交换节点?

       2.怎么交换节点?

       如图1和图2我们列举出了本题目将会出现的两种二叉树,根据这两种二叉树我们去找到上面两个问题的答案,具体思路请参考算法分析。

       如何将算法分析转换为代码,依旧是确定两个点,一是变量,二是逻辑主体,本题目的算法分析中并没有要求需要单独定义变量去记录数据,所以我们只看逻辑主体即可,代码示范中,我们将节点交换方法独立出来,以方便维护以及增加可读性,由于我们采用的是递归方式遍历二叉树,所以进行二叉树反转的逻辑我们也将其单独定义为一个函数。

http://www.yayakq.cn/news/14942/

相关文章:

  • 免费微信微网站模板下载班级信息网站建设的现状
  • 合肥专业手机网站制作价格网站建设敬请期待图片素材
  • 购物网站二级页面模板深圳最新新闻事件
  • 买域名了怎么做网站个人网站效果图
  • 做网站要学哪些代码信融网站建设网站开发
  • 门户网站建设技术要求电商系统平台开发的主要技术
  • 外贸网站建设可以吗戈韦思网站建设
  • 网站建设需要具备广州商旅网站制作
  • 做一个商城网站多少钱wordpress主题windows
  • 完整网站建设案例教程深圳网站建设讯美
  • 优秀画册设计网站七宝做网站公司
  • 打不开wordpress站点苏州知名网站建设定制
  • 网站资讯板块的搭建广东城乡建设厅网站首页
  • 青海建设协会网站wordpress添加继续阅读
  • 陕西省建设注册中心网站山东省建设厅特种作业证查询网站
  • 做网站要了解的事情免费搭建商城网站
  • 怎样做科普视频网站网站开发项目周期的
  • 刘家窑做网站的公司网站开发搜索功能
  • 盱眙建设局网站做书照片网站
  • 河南中国建设厅官方网站wordpress接入api
  • 网站外链建设的15个小技巧全能浏览器
  • 医药企业网站建设要哪些备案惠州市住房和城乡建设厅网站
  • 土特产网站建设wordpress怎么做产品列表页
  • 个人网站需要那些上海地区网站设计
  • 跨境电商网站建设成本贵州企业网站建设公司
  • 南昌网站设计专业安徽合肥做网站
  • 西安网站建设开发熊掌号外国语学院英文网站建设
  • 丽水网站建设明恩玉杰上市公司网站建设分析
  • 网站宽度960wordpress get pages
  • 为什么百度不收录我的网站电商网站开发总结与感受