剑指offer 面试37题
2024-10-19 11:51:18
面试37题:
题:序列化二叉树
题目:请实现两个函数,分别用来序列化和反序列化二叉树
解题思路:首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为None的时候输出一个特殊字符”#”。对于反序列化,就是针对输入的一个序列构建一棵二叉树,我们可以设置一个指针先指向序列的最开始,然后把指针指向位置的数字转化为二叉树的结点,后移一个数字,继续转化为左子树和右子树。当遇到当前指向的字符为特殊字符”#”或者指针超出了序列的长度,则返回None,指针后移,继续遍历。
解题代码:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
flag=-1
def Serialize(self, root):
# write code here
if not root:
return '#'
return str(root.val)+','+self.Serialize(root.left)+','+self.Serialize(root.right) def Deserialize(self, s):
# write code here
self.flag+=1
lis=s.split(',') if self.flag>=len(s):
return None root=None
if lis[self.flag]!='#':
root=TreeNode(int(lis[self.flag]))
root.left=self.Deserialize(s)
root.right=self.Deserialize(s)
return root
最新文章
- 如何理解javaSript中函数的参数是按值传递
- 初学Python之os模块
- 理解 Statement 和 PreparedStatement
- 乱码电路(Garbled circuits)
- QIBO CMS SQL Injection Via Variable Uninitialization In \member\special.php
- Cross-Site Scripting(XSS)的类型
- Node.js文件系统、路径的操作函数
- TIDB ---NEW SQL
- UVa12657 - Boxes in a Line(数组模拟链表)
- mac下安装redis
- svn命令的使用
- ssh 与 Telnet 的区别
- C#:占位符的例子
- [转载]HDFS的'Block'和MapReduce的'Split'之间的关系和区别
- cpu有哪些架构
- Search a 2D Matrix【python】
- Linux下DB2数据库安装教程
- Bmob后端云学习(未完)
- @PathVariable
- k8s容器的资源限制
热门文章
- awk 截取字符串
- CentOS环境下yum安装LAMP
- 【Python + ATX基于uiautomator2】之编写unittest自动化测试脚本
- I.MX6 Ethernet MAC (ENET) MAC Address hacking
- 模式识别之概率分布---平均分布,正态分布,一阶滑动和,一阶线性回归 C语言编程
- mysql增加自定义函数功能
- Android 自定义权限 (<;permission>; <;uses-permission>;)
- 拍照权限,GPS权限的控制
- Android无线测试之—UiAutomator UiDevice API介绍三
- C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)