[PHP] 数据结构-二叉树的创建PHP实现
2023-02-18 15:41:40 时间
1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作
if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}
2.前序遍历:先访问根结点,前序遍历左子树,前序遍历右子树;中左右
3.将二叉树中每个结点的空指针引出一个虚结点,其值为特定值#,处理二叉树为原二叉树的扩展二叉树,扩展二叉树做到一个遍历序列确定一棵二叉树
<?php class BinTree{ public $data; public $left; public $right; } //前序遍历生成二叉树 function createBinTree(){ $handle=fopen("php://stdin","r"); $e=trim(fgets($handle)); if($e=="#"){ $binTree=null; }else{ $binTree=new BinTree(); $binTree->data=$e; $binTree->left=createBinTree(); $binTree->right=createBinTree(); } return $binTree; } $tree=createBinTree(); var_dump($tree);
A B # D # # C # # object(BinTree)#1 (3) { ["data"]=> string(1) "A" ["left"]=> object(BinTree)#2 (3) { ["data"]=> string(1) "B" ["left"]=> NULL ["right"]=> object(BinTree)#3 (3) { ["data"]=> string(1) "D" ["left"]=> NULL ["right"]=> NULL } } ["right"]=> object(BinTree)#4 (3) { ["data"]=> string(1) "C" ["left"]=> NULL ["right"]=> NULL } }
相关文章
- IntelliJ IDEA终于支持对Redis 的可视化窗口操作了,真香!
- 如何实现一个 Kubernetes CSI Driver
- springbootdruidmybatismysql多数据源事务管理
- MySql大小写配置
- Redis集群搭建
- 传统Spring配置JTA 实现多数据源事务的统一管理
- Oracle定时任务
- Oracle查看锁表和解锁
- Mybatis resultMap和resultType的区别
- WebService如何封装XML请求 以及解析接口返回的XML
- Maven手动将jar导入本地仓库
- 初入SG-UAP
- sg-uap常用注解介绍
- Docker 阿里云镜像加速
- Elasticsearch 读时分词、写时分词
- SecureFX中文目录乱码问题解决方案
- 分布式事务
- 分布式CAP定理
- MySQL5.5安装教程
- Oracle数据库之FORALL与BULK COLLECT语句