题目目的:给定二叉树判断树中所有节点的值是不是唯一的,是:True
有一个不一样,返回False

class Solution:
def isUnivalTree(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
self.root = root
judgeVal = self.root.val
flag = True
# 分别判断左右儿子
if None != self.root.left:
if judgeVal != self.root.left.val:
return False
else:
flag = True
if None != self.root.right:
if judgeVal != self.root.right.val:
return False
else:
flag = True
# 遍历左子树
if None != self.root.left:
flag = self.isUnivalTree(self.root.left)
if not flag:
return False
# 遍历右子树
if None != self.root.right:
flag = self.isUnivalTree(self.root.right)
return flag
用例:[3,3,3,null,null,2,3]
预期返回值:False
实际:True
问题:root前加self会导致从根节点遍历右子树时报错,原因是在这个分支中self.root被self.root.left给覆盖掉了,根节点的左子树是个叶子结点,其右节点自然为None. 这是为什么?去掉self功能正常