L2-004. Is this a binary search tree? (Pyhton)

code show as below:

class TreeNode(object):
    def __init__(self, data=None, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right
    def __str__(self):
        return str(self.data)

class Solution:
    def postorderTraversal(self, root: TreeNode):  # 后序
        def postorder(root: TreeNode):
            if not root:
                return
            postorder(root.left)
            postorder(root.right)
            res.append(root.data)
        res = []
        postorder(root)
        return res

def tree1(node,root,tail):
    if len(node)==1 or tail==0 :
        return
    l = root+1
    r = tail
    node = node
    while node[l].data<node[root].data and l<=tail:
        l += 1
    while node[r].data>=node[root].data and r>root:
        r -= 1
    if l - r != 1:
        return
    node[root].left = node[root+1]
    node[root].right = node[root+l]
    tree1(node[root+1:l],0,len(node[root+1:l])-1)
    tree1(node[r+1:],0,len(node[r+1:])-1)

def tree2(node, root, tail):
    if len(node) == 1 or tail == 0:
        return
    l = root+1
    r = tail
    node = node
    while node[l].data >= node[root].data and l <= tail:
        l += 1
    while node[r].data < node[root].data and r > root:
        r -= 1
    if l - r != 1:
        return
    node[root].left = node[root + 1]
    node[root].right = node[root + l]
    tree2(node[root + 1:l], 0, len(node[root + 1:l]) - 1)
    tree2(node[r + 1:], 0, len(node[r + 1:]) - 1)

n = int(input())
node = [TreeNode(int(i)) for i in input().split()]
tree1(node,0,n-1)
s = Solution()
res = s.postorderTraversal(node[0])
if len(res)!=n:
    tree2(node, 0, n - 1)
    s = Solution()
    res = s.postorderTraversal(node[0])
if len(res) == n:
    print("YES")
    for i in range(len(res)-1):
        print(res[i],end=' ')
    print(res[len(res)-1])
else:
    print("NO")

The test score is only 17 points, please give me some advice:
insert image description here

おすすめ

転載: blog.csdn.net/weixin_56260304/article/details/127274843