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

结构设计在哪个网站接单兼职做衡水企业网站建设费用

结构设计在哪个网站接单兼职做,衡水企业网站建设费用,郑州哪个医院看妇科病最好的医院,公司网站建设合同要交印花税吗相关推荐 python coding with ChatGPT 打卡第12天| 二叉树:理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 文章目录 翻转二叉树Key Points相关题目视频讲解重点分析递归遍历…

相关推荐
python coding with ChatGPT 打卡第12天| 二叉树:理论基础
python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历
python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历

文章目录

  • 翻转二叉树
    • Key Points
    • 相关题目
    • 视频讲解
    • 重点分析
      • 递归遍历
      • 层序遍历
  • 对称二叉树
    • Key Points
    • 相关题目
    • 视频讲解
    • 重点分析
      • 递归法
      • 迭代法

翻转二叉树

Key Points

  1. 只要把每个节点的左右孩子翻转一下,就可以达到整体翻转的效果
  2. 可选择深度优先遍历(递归遍历)或广度优先遍历(层序遍历)

相关题目

226. 翻转二叉树

视频讲解

翻转二叉树

重点分析

递归遍历

前序:

def invertTreePreOrder(root):if not root:return Noneroot.left, root.right = root.right, root.leftinvertTreePreOrder(root.left)invertTreePreOrder(root.right)return root

中序:

def invertTreeInOrder(root):if not root:return NoneinvertTreeInOrder(root.left)root.left, root.right = root.right, root.leftinvertTreeInOrder(root.left)  # 注意:这里应该再次调用左子树return root

在中序遍历中,我们先递归地处理左子树,然后交换当前节点的左右子节点,最后处理右子树。注意,由于我们在交换后再递归右子树,实际上我们需要两次递归左子树。

中序 法2:

def invertTree(root):if not root:return rootright = root.right  # 先把右子树存起来# 左invertTree(root.left)# 根root.left, root.right = root.right, root.left# 右invertTree(right)return root

后序:

def invertTreePostOrder(root):if not root:return NoneinvertTreePostOrder(root.left)invertTreePostOrder(root.right)root.left, root.right = root.right, root.leftreturn root

层序遍历

def inverTree(root):if not root:return rootqueque_record = [root]while queque_record:node = queque_record.pop(0)node.left, node.right = node.right, node.left  # 这里不管是先翻转左右节点还是先加入左右节点都可以if node.left:queque_record.append(node.left)if node.right:queque_record.append(node.right)return root

在这里插入图片描述

在实现迭代法的过程中,有同学问了:递归与迭代究竟谁优谁劣呢?

从时间复杂度上其实迭代法和递归法差不多(在不考虑函数调用开销和函数调用产生的堆栈开销),但是空间复杂度上,递归开销会大一些,因为递归需要系统堆栈存参数返回值等等。

递归更容易让程序员理解,但收敛不好,容易栈溢出。

这么说吧,递归是方便了程序员,难为了机器(各种保存参数,各种进栈出栈)。

在实际项目开发的过程中我们是要尽量避免递归!因为项目代码参数、调用关系都比较复杂,不容易控制递归深度,甚至会栈溢出。

对称二叉树

Key Points

二叉树类的题目,确定遍历顺序非常重要

相关题目

101. 对称二叉树

视频讲解

同时操作两个二叉树

重点分析

递归法

def isSymmetric(root):if not root:return Truereturn compare(root.left, root.right)def compare(left, right):if not left and not right:return Trueif not left:return Falseif not right:return Falseif left.val != right.val:return Falsecon1 = compare(left.left, right.right)con2 = compare(left.right, right.left)if con1 and con2:return Truereturn False

在这里插入图片描述

迭代法

使用栈

def isSymmetric(root):if not root:return Truestack_record = [(root.left, root.right)]while stack_record:left, right = stack_record.pop()if not left and not right:continue   # 不能直接return Trueif not left:return Falseif not right:return Falseif left.val != right.val:return Falsestack_record.append([left.left, right.right])stack_record.append([left.right, right.left])return True

使用队列:

def isSymmetric(root):if not root:return Truequeue_record = [(root.left, root.right)]while queue_record:left, right = queue_record.pop(0)if not left and not right:continue   # 不能直接return Trueif not left:return Falseif not right:return Falseif left.val != right.val:return Falsequeue_record.append([left.left, right.right])queue_record.append([left.right, right.left])return True

在这里插入图片描述

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

相关文章:

  • 做网站最便宜要多少钱搭建平台筑巢引凤
  • 网站开发的方法有哪些桂林网站建设服务
  • 铭讯网站建设腾讯企业邮箱登录入口网址
  • 深圳建设局招标网站怎样给公司申请一个网站
  • 网站开发培训课程表wordpress 5.2中文版
  • 中国建设银行邵阳分行网站搭建网站做财务系统
  • 郑州网站建设信息自定义短链接生成
  • 最讨厌网站南昌地宝网二手房出售信息
  • 丹阳建设局网站soho外贸建站
  • 上海网站开发建设价格企业应对承包商的施工方案尤其是
  • 江苏省城乡与建设厅网站首页wordpress 根据分类id获取分类名称
  • 旅行网站开发意义淘宝网站建设预算表
  • 做网站常用的jquery编程猫下载
  • 广州建设银行预约公积金网站编写网站代码
  • 海淀做网站的网络公司哈尔滨市建设厅网站
  • 广州做网站代理商建公司的步骤
  • 建设企业品牌网站全国连锁装修公司
  • dnf怎么做发卡网站长春市网络科技有限公司
  • 做网站推广怎么定位客户wangye
  • 广州我网站制作邮箱地址注册入口
  • 如何建立一个网站放视频泉州市建设局网站
  • 安阳汤阴县网站建设微网站的链接怎么做
  • 公司网站备案申请青岛建站程序
  • 鸿邑网站建设wordpress 生成
  • 金华做网站什么网站有做qq群排名的
  • 龙口网站制作公司宁海有做网站的吗
  • 上海陆海建设集团网站台州建设网站公司
  • 珠海网站建设电话即墨网站建设公司
  • 网站建设.龙兵国外媒体中文网站
  • 江苏建设集团招聘信息网站广东城乡建设厅网站首页