栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python对称二叉树

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python对称二叉树

方法1:用层序遍历,一层层检测是否对称
方法2:递归或BFS,对应节点逐个比较,每次比较完一对节点(left,right),新增两对需比较结点
(left.left,right.right),(left.right,right.left),二叉树,倍增的思想
递归

# 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 isSymmetric(self, root: TreeNode) -> bool:
        if root==None:
            return True
        
        return self.helper(root.left,root.right)

    def helper(self,Nleft,Nright)->bool:

        if(Nleft==None and Nright==None):
            return True
        if((Nleft==None) ^ (Nright==None)) or (Nleft.val != Nright.val):
            return False

        return self.helper(Nleft.left,Nright.right) and self.helper(Nleft.right,Nright.left)

非递归,双进双出

# 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 isSymmetric(self, root: TreeNode) -> bool:
        if root==None:
            return True
        queue = [(root.left, root.right)]
        while(queue):
            (left,right) = queue.pop(0)
            if(left==None and right==None): #对称
                continue
            if((left==None)^(right==None) or (left.val != right.val)): #不对称
                return False
            queue.append((left.left,right.right))
            queue.append((left.right,right.left))
        
        return True
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号