剑指offer---4、序列化二叉树
2024-08-26 06:33:12
剑指offer---4、序列化二叉树
一、总结
一句话总结:
1. 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个' , '作为分割。对于空节点则以 '#' 代替。
2. 对于反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树
1、对一个二叉树序列化是什么意思?
序列化就是将对象或者数组转化为 字符串
2、php自带序列化和反序列化函数么(序列化二叉树)?
带的:serialize($pRoot); unserialize($s);
<?php /*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
function MySerialize($pRoot)
{
// write code here
return serialize($pRoot);
}
function MyDeserialize($s)
{
// write code here
return unserialize($s);
}
二、内容在总结中
1、题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
2、代码
<?php /*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
function MySerialize($pRoot)
{
// write code here
return serialize($pRoot);
}
function MyDeserialize($s)
{
// write code here
return unserialize($s);
}
<?php /*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
function MySerialize($pRoot)
{
if($pRoot == null) return '#';
$arr = [];
preOrder($pRoot,$arr);
$str = $arr[0];
for($i=1;$i<count($arr);$i++)
$str = $str." ".$arr[$i];
return $str;
}
function preOrder($pRoot,&$arr){
if($pRoot == null){
$arr[] = '#';
return ;
}
$arr[] = $pRoot->val;
preOrder($pRoot->left,$arr);
preOrder($pRoot->right,$arr);
return ;
}
function MyDeserialize($s)
{
$i = -1;
$arr = explode(" ",$s);
return reconstruct($arr,$i); }
function reconstruct($arr,&$i){
$i++;
if($i >= count($arr))
return null;
if($arr[$i] == '#')
return null;
$node = new TreeNode($arr[$i]);
$node->left = reconstruct($arr,$i);
$node->right = reconstruct($arr,$i);
return $node;
}
最新文章
- Sort merge join、Nested loops、Hash join(三种连接类型)
- js中for in 和 for each in的用法和区别
- Salt官方将RHEL5/CentOS5 源
- 日志基本概念/rSyslog
- cf 383 D
- jq选取对象的方法
- java的装箱与拆箱
- Emit学习(1)-Emit概览
- Win32/MFC的基本概念
- ★MySQL一些很重要的SQL语句
- SCU 4438 Censor KMP/Hash
- 二叉树与AVL树
- Java-IO流之BufferedReader 和BufferedWriter的使用和原理
- 今天我得鼓吹一波 Kotlin
- Java中的堆内存设置对线程创建数的影响以及-Xss参数的记录
- Hexo站点之域名配置【2】
- Kinect2.0关节角度获取
- aarch64_g1
- Hibernate 性能优化一对一关联映射
- STL学习笔记(第二章 C++及其标准程序库简介)