LeetCode 1028 從先序遍歷還原二叉樹

 


class Solution:
    def recoverFromPreorder(self, S: str) -> TreeNode:
        stack=[]
        i=0
        while i<len(S):
            cnt = 0
            while i < len(S) and S[i] == '-':
                cnt += 1
                i += 1
            value=0
            while i<len(S) and  S[i].isdigit():
                value=value*10+int(S[i])
                i+=1
            if not stack:
                stack.append(TreeNode(value))
            else:
                node1=TreeNode(value)
                if cnt==len(stack):
                    stack[-1].left=node1
                else:
                    stack=stack[:cnt]
                    stack[-1].right=node1
                stack.append(node1)
        return stack[0]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章