题目:
思路:
这个题其实就是判断两个数是否完全相等,包括树的结构还有节点值,这里我的解决方法主要还是利用递归的方法,按照中序遍历的思路,来判断数值是否相等,所以这个方法不是从首节点开始判断,而是按照中序的左中右来判断,并且为了提高速度(递归会占用比较多的内存和时间),所以在中序遍历之前,我还加了一个标志的判断,如果在一次递归的最开始就判断到falg==0(也就是前面已经出现了不相等的情况),那么直接退出这次的递归,这样的话,如果左子树有不相等的情况了就不需要再去判断右子树是否相等。参考代码如下:
代码:
# 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:
flag = 1
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
def judge(p:TreeNode,q:TreeNode):
if self.flag==0:
return
if (p == None) and (q == None):
return
elif (p == None and q != None) or (p!=None and q == None):
self.flag = 0
return
judge(p.left,q.left)
if p.val != q.val:
self.flag = 0
return
judge(p.right,q.right)
judge(p,q)
if self.flag == 0:
return False
else:
return True
结果:
实际上,能不用递归是最好的,但是我写的时候还是写的递归,等后面写了不是递归的方法再来更新一下这篇文章。
关于LeetCode的解题方法欢迎大家一起讨论~