宝哥软件园

PHP绘制二叉树的图形显示功能详解[包括二叉查找树 平衡树 红黑树]

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

本文举例说明了用PHP绘制二叉树的图形显示功能。分享给大家参考,如下:

前言:

最近老师布置了一个作业:理解并实现平衡二叉树和红黑树。本来老师说用C#写的,但是我学的C#基本都还给老师了。我该怎么办?然后用现在最熟悉的语言PHP写。

有一个问题,在解释书中的树的时候,基本上是给出一个图像的树形图。但是当我们试图自己实现某种树时,在调试输出时只能以字符的形式按顺序输出。这给调试等方面带来了极大的不便。然后经过各种百度,发现用PHP实现二叉树图形显示的资源几乎为零!好吧,我自己做一个!

效果显示:

如果我在这一步直接放代码,估计大家都会恼火,那我就直接去结果,然后补充代码,先激发大家的阅读兴趣:

1.搜索二叉树:

2.平衡二叉树:

3.红黑树:

代码开启:

让我们为图片创建一个类,它稍微有些高级:

Image.php文件:

?PHP/* * * author : lsgozj * description 3360绘制二叉树图像*/类图像{ //树相关设置//各层之间的间隔高度为private $ level _ high=100//底部叶节点之间的宽度为private $ leaf _ width=50//节点圆的半径为private $ rad=20//根节点到边框顶部的距离为private $ leave=20//tree(保存树对象的引用)private $ tree//树的级别是private $级别;//完整二叉树底部的叶节点数(计算图像宽度时使用,关于如何实现图像大小自适应)private $ maxCount//图像相关设置//画布宽度private $ width//画布高度private $ height//画布背景色(RGB)私有$ BG=数组(220,220,220);//节点颜色(搜索二叉树和平衡二叉树时使用)private $ nodecolor=array (255,192,203);//image句柄private $ image/* * *构造函数,类属性初始化* @param $tree传递一个tree对象* @ return null */public function _ _ construct($ tree){ $ this-tree=$ tree;$ this-level=$ this-GetLevel();$ this-maxCount=$ this-GetMaxCount($ this-level);$ this-width=($ this-rad * 2 * $ this-maxCount)$ this-maxCount * $ this-leaf _ width;$this-height=$this-level *(美元this-rad * 2) $this-level_high *(美元this-level-1)$ this-leave;//1.创建画布$ this-image=image create true color($ this-width,$ this-height);//新建真彩色图像,默认背景为黑色//填写背景色$ bgcolor=imagecolorrequest($ this-image,$ this-BG [0],$ this-BG [1],$ this-BG[2]);imagefill($this-image,0,0,$ bgcolor);}/* * *返回与传入树对象对应的完整二叉树中最低级别的叶节点数* @ param $ level tree level * @ return node number */function get maxcount($ level){ return pow(2,$ level-1);}/* * *获取树对象的层数* @ param null * @ return tree */function getlevel(){ return $ this-tree-depth();}/* * *显示二叉树图像* @

更多资讯
游戏推荐
更多+