二叉树的序列化和反序列化

def serialize(self, root):
        if root == None:
            return None
        result = []
        queue = [root]
        
        while len(queue) == 0:
            curNode = queue.pop(0)
            if curNode:
                result.append(curNode.val)
                queue.append(curNode.left)
                queue.append(curNode.right)
            else:
                result.append('#')
            
        return result

def deserialize(self, data):
        # write your code here
        if len(data) == 0:
            return None
        root = TreeNode(data[0])
        
        queue = [root]
        index = 0
        while index+1 < len(data):
            curNode = queue.pop(0)
            if curNode:
                left = TreeNode(data[index+1])
                right = TreeNode(data[index+2])
                if data[index+1] == '#':
                    left = None
                if data[index+2] == '#':
                    right = None
                index += 2
                queue.append(left)
                queue.append(right)
                curNode.left = left
                curNode.right = right
        return root
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容