判断对称二叉树 python代码

  对称二叉树的含义非常容易理解,左右子树关于根节点对称,具体来讲,对于一颗对称二叉树的每一颗子树,以穿过根节点的直线为对称轴,左边子树的左节点=右边子树的右节点,左边子树的右节点=左边子树的左节点。所以对称二叉树的定义是针对一棵树,而判断的操作是针对节点,这时可以采取由上到下的顺序,从根节点依次向下判断,只需要递归,不需要回溯。具体代码如下。

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
#判断对称二叉树
    def isSymmetrical(self, pRoot):
        # write code here
        if not pRoot:
            return True
        def Traversal(left, right):
            if left is None and right is None:#如果是叶节点,直接返回True
                return True
            #如果左右节点相同,继续判断左-左和右-右,以及左-右和右-左
            elif left and right and left.val == right.val:
                return Traversal(left.left, right.right) and Traversal(left.right, right.left)
            else:
                return False
        return Traversal(pRoot.left, pRoot.right)

原文地址:https://www.cnblogs.com/bambipai/p/10679330.html

时间: 2024-08-18 21:09:08

判断对称二叉树 python代码的相关文章

判断对称二叉树

给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / 2 2 / \ / 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / 2 2 \ 3 3 解题思路: 若二叉树是镜像对称的,处于同一层对称的两个节点node1与node2, node1的值与node2的值必相等,且node1.left与node2.right的值也相等,且node1.right 与 node2.left的值也相等. 如上例

写段python代码判断list深度

主要是针对嵌套列表问题.列表套列表,到底子列表那个更深... 这个问题想着就烦.如果嵌套10000万个列表是不是要统计10000个数再排序呢? 最后想了想用 list的extend功能 加上递归函数尝试了一下,代码如下: l1=[1,'a',[1],[2,3,[4,5,[6,7,[7]]]],[2,5,[5,6]],[4],[5],[6]] #l1 = [1, 2, [3, [4, 5], 6, [7, 8,[9, 10], 11], 12], 13] count = 1 def func(l)

python代码中判断版本

在python代码中判断python版本: if sys.version_info < (3, 0): lib.make_flows.argtypes = [c_char_p, c_char_p, c_int, c_int, c_int] lib.make_flows(avi, newpath, 0, 0, 10) else: in_path = bytes(avi, 'utf8') out_path = bytes(newpath, 'utf8') lib.make_flows(in_path

Python代码样例列表

├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│      NFA引擎,Python正则测试工具应用示例.py│      Python datetime计时程序的实现方法.py│      python du熊学斐波那契实现.py│      python lambda实现求素数的简短代码.py│      Python localtime()方法计算今天是一年中第几周.py│      Python math方法算24点代码详解.py│      Pyth

十分钟的Python代码知识点总结

#-- 寻求帮助:dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表help(obj.func) # 查询obj.func的具体介绍和用法 #-- 测试类型的三种方法,推荐第三种if type(L) == type([]):print("L is list")if type(L) == list:print("L is list")if isinstance(L, list):print("L is list") #-

[Luogu P5018] 对称二叉树

原题链接qwq \(Structure\) 本题作为 \(PJ\ T4\) 其实还是历届以来较简单的 题目相信大家已经读过了,就是让我们找出一棵二叉树中具有最多结点的对称子树. 但肯定会有很多人审题不清楚而导致没有弄清对称子树的概念(可能是时间也不够扒) 下面就来给大家讲(胡)解(扯)一下 在上图中,我们可以看出,子树既可以是根节点和叶节点组成,也可以是一个节点, 如图中绿色笔圈出的就是一棵树.在比赛中,有很多选手将对称子树理解成:一棵树 中的一部分为对称(如图中蓝色笔和粉色笔圈出的).但实际上

101. 对称二叉树,c++迭代递归解法

101. 对称二叉树,c++迭代递归解法 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树?[1,2,2,3,4,4,3] 是对称的. 1 / 2 2 / \ / 3 4 4 3 但是下面这个?[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / 2 2 \ 3 3 这道题可以用迭代和递归两种方法求解 迭代法代码如下,主要思想是,将树的左右分支放入两个队列中.因为题目是判断两个数是否对称,所以在将节点a的孩子放左队列时,先放a的右子结点,再放a的左子结点:在将节点b的孩子

[Leetcode] Symmetric tree 对称二叉树

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree is symmetric: 1 / 2 2 / \ / 3 4 4 3 But the following is not: 1 / 2 2 \ 3 3 Note: Bonus points if you could solve it both rec

200行Python代码实现2048

200行Python代码实现2048 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器 3. 环境使用 使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操