|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 xqq1984 于 2020-2-4 15:01 编辑
- class TreeNode():
- def __init__(self,val,left = None,right = None):
- self.val = val
- self.left = left
- self.right = right
- F = TreeNode('F')
- G = TreeNode('G')
- C = TreeNode('C')
- D = TreeNode('D',F,G)
- E = TreeNode('E')
- A = TreeNode('A',C,D)
- B = TreeNode('B',right=E)
- Root = TreeNode('Root',A,B)
- F = TreeNode('F')
- G = TreeNode('G')
- C = TreeNode('C')
- D = TreeNode('D',F,G)
- E = TreeNode('E')
- A = TreeNode('A',C,D)
- B = TreeNode('B',right=E)
- Root1 = TreeNode('Root',A,B)
- def isldentical(a,b):
- if a == None and b == None:
- return True
- if a == None or b == None:
- return False
- if a.val != b.val: #请问Root.left.val是怎么出来的
- return False
- left = isldentical(a.left,b.left)
- right = isldentical(a.right,b.right)
-
- return left and right
- a = isldentical(Root,Root1)
- print(a)
复制代码
运行到 left = isldentical(a.left,b.left) 时,Root.left.val是怎么出来的,代表A的val吗,为什么呢,麻烦大佬解释一下语法
打印又说没有这个属性
- def isldentical(a,b):
- if a == None and b == None:
- return True
- if a == None or b == None:
- return False
- if a.val != b.val: #请问Root.left.val是怎么出来的
- return False
- left = isldentical(a.left,b.left)
- right = isldentical(a.right,b.right)
复制代码
首先在想象树 Root (每个节点,均为TreeNode实例对象)
A B
C D E
F G
isldentical函数,只有当Root1.val 和 Root2.val相等,才会去执行新一轮的递归调用。
如开始,你传的Root和Root1 函数最先比较就是他们两个节点,然后递归,一直到递归出口(父节点的左右出现None),双路递归,不明白的话,自己多琢磨,记住一句话,函数运行比较有结果后,才会执行下一步,遇到函数,就往函数里面走。
|
|