PHP类物体--解析PHP实现二叉树
两叉树及其变体是数据结构家族的重要组成部分,最常用的链表的变体是最适合处理需要按特定顺序快速组织和检索的数据的两叉树。复制代码代码如下所示:
< PHP
定义一个类来实现二进制树
类binary_tree_node {
定义变量来保存我们的数据:
公开数据;
和一个变量来保存左/右对象:
公共左;
公共权利;
允许传入数据的构造函数方法。
公共功能__construct($ = null){
$;
}
左/右遍历树,以右,按顺序返回数组。
序意味着每个节点的值/使得它的孩子。
公共功能traversepreorder(){
一些变量。准备工作
数组();
数组();
在左/右/ /子中适当地遍历:
如果(美元->左){ $ L =美元->左-> traversepreorder();}
如果(美元->右){ $ R =美元->右-> traversepreorder();}
返回当前值的合并数组,左和右:
返回array_merge(阵列(美元->数据),$,$ R);
}
左 / /遍历树,右,后序,返回一个数组
后序意味着每个节点的值/追随它的孩子。
公共功能traversepostorder(){
一些变量。准备工作
数组();
数组();
在左/右/ /子中适当地遍历:
如果(美元->左){ $ L =美元->左-> traversepostorder();}
如果(美元->右){ $ R =美元->右-> traversepostorder();}
返回当前值的合并数组,左和右:
返回array_merge($ L,r,阵列(美元->数据));
}
左边的遍历树,向右,依次返回,数组。
意味着值是按左子顺序排序的,然后
然后,节点值,右子。
公共功能traverseinorder(){
一些变量。准备工作
数组();
数组();
在左/右/ /子中适当地遍历:
如果(美元->左){ $ L =美元->左-> traverseinorder();}
如果(美元->右){ $ R =美元->右-> traverseinorder();}
返回当前值的合并数组,左和右:
返回array_merge($ L,阵列(美元->数据),$ R);
}
}
让我们创建一个二进制树,它将等于:3
9 / h
树:创建一个6
新binary_tree_node美元树(3);
美元树->左=新binary_tree_node(H);
美元树->右=新binary_tree_node(9);
美元树->右->左=新binary_tree_node(6);
美元树->右->右=新binary_tree_node(A);
现在遍历所有可能的订单中的树并显示结果:
3 预订单:h,9, 6,A
回声,内爆(',',美元树-> traversepreorder()),;
订单:h,9, 6,A,3
回声,内爆(',',美元树-> traversepostorder()),;
顺序:h,3, 6, 9,a
回声,内爆(',',美元树-> traverseinorder()),;
>