Python|Dfs回溯解二叉树伪回文
  TEZNKK3IfmPf 2023年11月15日 25 0

问题描述

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

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

示列1:

Python|Dfs回溯解二叉树伪回文


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: TreeNode):
self.ass=[0,0,0,0,0,0,0,0,0,0] #计数路径中数字的个数
self.res=0 #记录符合路径的个数
self.dfs(root,[]) #深搜回溯
return self.res
def dfs(self,root,path): #回溯方法
if root is None:
return
self.ass[root.val]+=1 #将节点数值对应的数字个数加1
if root.left is None and root.right is None:#当达到叶子节点时开始判断是否为伪回文
x=0
for i in range(10):
if self.ass[i]%2!=0 and self.ass[i]!=0:#记录数字个数为奇数的数目
x+=1
if x<2:
self.res+=1#如果路径中数字个数为奇数的数目为1或0,就是伪回文
if root.left:
self.dfs(root.left,path)
if root.right:
self.dfs(root.right,path)
self.ass[root.val]-=1

结语

这道题就是二叉树的遍历和伪回文的判断,树的遍历基本上是用dfs来遍历的,所以遇到二叉树就要想到dfs或者bfs来遍历,还有就是回溯的点,这道题很简单,回溯的点就是叶子节点的时候就可以回溯了。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   34   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   27   0   0 python
  TEZNKK3IfmPf   2024年05月31日   34   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   27   0   0 python
TEZNKK3IfmPf