劍指Offer 序列化二叉樹Java Python

2021-09-23 01:49:17 字數 1560 閱讀 7745

請實現兩個函式,分別用來序列化和反序列化二叉樹。

所謂序列化指的是遍歷二叉樹為字串;所謂反序列化指的是依據字串重新構造成二叉樹。

依 據前

序遍歷序

列來序列

化二叉樹

,因為前

序遍歷序

列是從根

結點開始

的。

\red

依據前序遍歷

序列來序

列化二叉

樹,因為

前序遍歷

序列是從

根結點開

始的。當在遍

歷二叉樹

時碰到空

指標時,

這些空指

針被序列

化為乙個

特殊的字

符#

。\red

當在遍歷二叉

樹時碰到

空指標時

,這些空

指標被序

列化為一

個特殊的

字元#。

另 外,

結點之間

的數值用

逗號隔開

。另外

,結點之

間的數值

用逗號隔

開。

/*

public class treenode }*/

public class solution

return sb.tostring();

} treenode deserialize(string str)

return root;

}}

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def __init__(self):

self.index = -1

def serialize(self, root):

if not root:

return '#'

ans = str(root.val)+',' + self.serialize(root.left)+',' + self.serialize(root.right)

return ans

def deserialize(self, s):

self.index += 1

chars = s.split(',')

root = none

if chars[self.index] != '#':

root = treenode(int(chars[self.index]))

root.left = self.deserialize(s)

root.right = self.deserialize(s)

return root

劍指offer 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。首先得理解題目的意思,序列化就是返回乙個帶有 和逗號的字串。反序列化就是根據帶有 和逗號的字串返回一棵二叉樹。比如對於二叉樹 1 2 3 4 5 6 7來講,序列化的結果是1,2,3,4,7,5,而反序列化的結果則是輸出一棵二叉樹。public cla...

劍指Offer 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 根據前面的面試題重建二叉樹,我們知道可以從前序遍歷和中序遍歷構造出一棵二叉樹。受此啟發,我們可以先把一棵二叉樹序列化成乙個前序遍歷序列和乙個中序序列的結合,然後再反序列化時通過這兩個序列重構出原二叉樹。但是這個思路有兩個缺點。乙個缺點是該方法要求二叉樹...

劍指offer 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 首先這道題目是要有兩個問題,第乙個是把一棵二叉樹按照前序遍歷的方式變成乙個字串。第二個是把乙個字串變成乙個二叉樹。對於第乙個問題來說,我們要對這棵樹進行乙個前序遍歷,按照中左右的方式放入列表中,如果節點為空,則插入 最後.join 來實現列表到字串的轉...