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

网站后台编辑器不显示软文代写兼职

网站后台编辑器不显示,软文代写兼职,c2c模式在我国开始于1999年的,电子商务网站的整个建设流程一、题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 二、思路 …

一、题目

给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。

请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。

二、思路

  1. 理解伪回文路径的概念

    • 首先,我们要明白什么是伪回文路径。对于一条从根节点到叶节点的路径,这条路径上的节点值组成一个序列。如果这个序列可以通过重新排列,变成一个回文序列,那么这条路径就是伪回文路径。
    • 回文序列就是正读和反读都一样的序列,比如 "aba" 或 "aabb"。对于我们的问题,节点值范围是 1 到 9,所以我们只需要关注这些数字出现的次数。
    • 对于一个序列要成为伪回文序列,其中最多只能有一个数字出现的次数是奇数,其他数字出现的次数都必须是偶数。例如,对于序列 "121",数字 1 出现两次(偶数次),数字 2 出现一次(奇数次),可以重新排列成 "112" 形成回文,所以是伪回文序列;对于序列 "123",三个数字都只出现一次,不满足最多一个数字出现奇数次,所以不是伪回文序列。
  2. 使用深度优先搜索(DFS)遍历二叉树

    • 我们要遍历二叉树从根节点到所有叶节点的路径。这就像走迷宫一样,从起点(根节点)出发,每次选择一个分支(左子节点或右子节点)走,直到走到终点(叶节点)。
    • 在走的过程中,我们要记录下经过的节点值。
    • 当到达叶节点时,检查这条路径是否是伪回文路径。
  3. 记录节点值的出现次数

    • 我们可以使用一个列表(或数组)来记录每个数字(1 到 9)出现的次数。开始时,列表中所有数字的计数都是 0。
    • 当我们经过一个节点时,就把该节点值对应的计数加 1。
    • 当我们回溯(从叶节点往回走)时,要把这个计数减 1,因为我们要检查其他可能的路径。
  4. 检查是否是伪回文路径

    • 当到达叶节点时,我们检查记录节点值出现次数的列表。
    • 计算列表中出现奇数次的数字的数量。如果这个数量小于等于 1,那么这条路径就是伪回文路径。

具体步骤:

  1. 开始 DFS 遍历

    • 从根节点开始,将根节点的值对应的计数加 1。
    • 然后递归地对左子节点和右子节点进行 DFS 遍历。
    • 每次递归调用时,会重复上述加计数的操作。
  2. 到达叶节点

    • 当到达叶节点时,检查列表中出现奇数次的数字的数量。
    • 如果这个数量小于等于 1,说明这条路径是伪回文路径,我们可以将结果加 1。
  3. 回溯操作

    • 在从叶节点往回走时,要把当前节点值对应的计数减 1,这样可以继续检查其他可能的路径。

三、题解

# Definition for a binary tree node.

# class TreeNode:

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution:

    def pseudoPalindromicPaths (self, root: Optional[TreeNode]) -> int:

        mylist = [0]*10

        return self.dfs(mylist,root)

    # 递归

    def dfs(self,mylist,root):

        ans = 0

        # 初始条件

        if not root:

            return 0

        mylist[root.val] += 1

        if not root.left and not root.right:

            ans = int(self.isPalindromic(mylist))

        else:  

            ans = self.dfs(mylist,root.left) + self.dfs(mylist,root.right)

        mylist[root.val] -= 1

        return ans

    def isPalindromic(self,mylist):

        odd = 0

        for value in mylist:

            if value%2 == 1:

                odd += 1

        return odd <= 1

http://www.yidumall.com/news/82392.html

相关文章:

  • 专业做网站推广的公司东莞产品网络推广
  • 免费的正能量视频素材网站最新域名ip地址
  • 中国建设银行官网站e路护下载关键词上首页软件
  • 做女装的网站有哪些怎样推广网站
  • 酒店网站策划seo发包软件
  • 做农产品的网站互联网营销策划是做什么的
  • 网站功能界面设计北京疫情消息1小时前
  • 临沂做商城网站设计营销推广的主要方法
  • 做网站需要交接什么项目外包平台
  • 重庆营销型网站建设多少钱萧山区seo关键词排名
  • 类似58同城的网站怎么做100个免费推广b站
  • 做网站运营怎么样艾滋病阻断药有哪些
  • wordpress 技术交流群seo关键词优化举例
  • 网站换域名seo怎么做百度seo软件优化
  • 郴州网站建设公司读书网站排名
  • 群晖怎么做网站2023疫情最新情况
  • 360百度网站怎么做百度广告投放价格表
  • 暴雪国服百度seo收录软件
  • 网站制作公司教你怎么制作网站手机上可以创建网站吗
  • 做网站蓝色和什么颜色搭配好看老师直播课
  • 毕业设计做音乐网站可以吗百度搜索高级搜索技巧
  • php企业网站开发实验总结临沂色度广告有限公司
  • 如何做链接淘宝客的网站百度seo关键词报价
  • 关键词搜索数据seo排名优化方式
  • 网站安排百度搜索引擎广告投放
  • 一家只做家纺的网站网络推广平台网站推广
  • logo做ppt模板下载网站seo排名软件哪个好用
  • 重庆网站建设外包哪家好同仁seo排名优化培训
  • 郑州公司企业网站建设网站怎么做外链
  • 河北智慧团建网站怎么做优化