https://leetcode.com/problems/same-tree/description/
判断两棵二叉树是否相同(结构一样,相同位置结点一样)
思路:按相同顺序遍历,用一个全局flag,初始为true。每当两棵树的结点不相等,或者一棵树有结点而另一棵树为空时,flag=false
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
self.flag = True #全局变量
self.travel(p, q)
return self.flag
def travel(self, p, q):
#若p,q都非空,可以前序,中序,后序遍历,只要两棵树次序一致都可
if p and q:
if p.val != q.val:
self.flag = False
self.travel(p.left, q.left)
self.travel(p.right, q.right)
#若p,q有一个空,另一个非空
elif not p and q:
self.flag = False
elif p and not q:
self.flag = False
#p,q都为空,返回。由于函数没有返回值,可以省略不写
else:
return