一、题目分析
今天(2020-8-7)是个简单题。这大概是我第一次没看任何答案,纯靠自己写出来的了。值得庆祝一下,虽然是个简单题哈哈哈。嗯,中午奖励自己剁个手~~
(1)要判断两个数是不是一样的,就遍历一下一个节点一个节点的判断就行了,。最容易想到的就是递归了。这道题代码很快就写完了,不过提交了才发现,关键是要看懂题目。自己运行每次都能通过,可钱钱后后一共提交了7次才通过。每次提交都能更加读懂题目的意思。。。这种情况估计就是属于刷题太少的,没有经验了。
二、代码实现
代码如下。其中,函数isSameNode()
就是判断两个节点的值是否相等的,如果有子节点就递归传递给子节点。返回bool
型。
# 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 isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
def isSameNode( p: TreeNode, q:TreeNode):
if p!=None and q!=None:
if p.val == q.val:
if p.left != None and q.left!=None and p.right != None and q.right!=None:
return isSameNode(p.left, q.left) and isSameNode(p.right, q.right)
elif p.left == None and p.right != None and q.left==None and q.right!=None:
return isSameNode(p.right, q.right)
elif p.left != None and p.right == None and q.left!=None and q.right==None:
return isSameNode(p.left, q.left)
elif p.left == None and q.left == None and p.right == None and q.right==None: {} # 空语句
else: return False
return True
else: return False
elif p==None and q==None: return True
else: return False
return isSameNode(p,q)