博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(python版)《剑指Offer》JZ58:对称的二叉树
阅读量:4090 次
发布时间:2019-05-25

本文共 960 字,大约阅读时间需要 3 分钟。

在这里插入图片描述
在这里插入图片描述

【思路】

  1. 我们首先判断特殊情况,当根节点为空,我们可以直接返回True,这时候是对称的
  • 不为空的时候,只要我们重新定义一个函数 restruct,判断左右子树,

  • 当两个子树为空的时候,直接返回True,这时候肯定是对称的

  1. 再判断返回False的情况:两个子树有一个为空就要返回False,当然左右子树的值不相等也要返回False

  2. 接下来,我们利用递归的思想,将左子树的左边和右子树的右边做为函数的输入,进行判断,不断递归,同理将左子树的右边右子树的左边作为输出同时返回结果

# -*- coding:utf-8 -*-# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def isSymmetrical(self, pRoot):        # write code here        if not pRoot:            return True        return self.restruct(pRoot.left, pRoot.right)# 左子树的左节点与右子树的右节点相等,# 左子树的右节点与右子树的左节点相等    def restruct(self,A,B):        if not A and not B:            return True        if not A or not B or A.val != B.val:            return False        if A.val == B.val:            return self.restruct(A.left,B.right) and self.restruct(A.right,B.left)        return False

https://cuijiahua.com/blog/2018/01/basis_58.html

https://www.cnblogs.com/cong3Z/p/12939870.html

你可能感兴趣的文章
DirectX11 点光
查看>>
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
Node.js核心模块
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>