树练习题

Tree exercise issue

我正在尝试使用 VScode 测试此代码,但我想我声明了一些错误。

大家可以支持我吗??

非常感谢!!!

# 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 invertTree(self,root):
        if not root:
            return None
        
        # swap the children
        tmp = root.left       <----- here shows me the issue
        root.left = root.right
        root.right = tmp
        
        self.invertTree(root.left)
        self.invertTree(root.right)
        return root

tree = Solution()
node1 = TreeNode("4","2","7")
node2 = TreeNode("2","1","3")
node3 = TreeNode("7","6","9")
tree.invertTree(node1)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-8dc5914e9836> in <module>()
     23 node2 = TreeNode("2","1","3")
     24 node3 = TreeNode("7","6","9")
---> 25 tree.invertTree(node1)

1 frames
<ipython-input-13-8dc5914e9836> in invertTree(self, root)
     11 
     12         # swap the children
---> 13         tmp = root.left
     14         root.left = root.right
     15         root.right = tmp

AttributeError: 'str' object has no attribute 'left'

这是我得到的错误,我想问题出在创建节点的过程中,但我不知道该怎么做。

您的 leftright 只是字符串(没有 leftright 属性,因为您 可能得到说)。

您需要传递 TreeNodes,e.x.:

tree = Solution()
root = TreeNode(
    "4",
    TreeNode(
        "2",
        TreeNode("1"),
        TreeNode("3")
    ),
    TreeNode(
        "7",
        TreeNode("6"),
        TreeNode("9")
    )
)
tree.invertTree(root)