博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 使用二叉树的先序和中序遍历结果构造二叉树
阅读量:6830 次
发布时间:2019-06-26

本文共 1294 字,大约阅读时间需要 4 分钟。

1 
parent = $p;23 $root->data = $pre[$pre_s]; #根节点数据在pre数组的第一位24 $root_inx = array_search($root->data, $in); #根节点在in数组中的坐标25 26 #我把左右子树的pre数组,in数组的开始结束坐标写出来,便于理解27 $pre_l_s = $pre_s + 1; #左子树在pre数组的开始坐标28 $pre_l_e = $pre_s + ($root_inx - $in_s); #左子树在pre数组的结束坐标,其中root_inx-in_s为左子树长度29 $pre_r_s = $pre_l_e + 1; #右子树开始坐标30 $pre_r_e = $pre_e; #右子树结束坐标31 $in_l_s = $in_s; #左子树在in数组开始坐标32 $in_r_s = $root_inx + 1; #右子树在in数组开始坐标33 34 #注意此处35 if ($pre_l_s <= $pre_l_e) $root->left = build_bt_prein($pre, $in, $pre_l_s, $pre_l_e, $in_l_s, $root);36 if ($pre_r_s <= $pre_r_e) $root->right = build_bt_prein($pre, $in, $pre_r_s, $pre_r_e, $in_r_s, $root);37 38 return $root;39 }40 41 #中序遍历42 function inorder_traverse($root) {43 if ($root->left != null) inorder_traverse($root->left);44 echo $root->data . " ";45 if ($root->right != null) inorder_traverse($root->right);46 }47 48 $pre = array(7, 10, 4, 3, 1, 2, 8, 11); 49 $in = array(4, 10, 3, 1, 7, 11, 8, 2); 50 // $pre = array(2, 7); 51 // $in = array(7, 2); 52 $root = build_bt_prein($pre, $in, 0, count($pre) - 1, 0, null);53 inorder_traverse($root);54 ?>

4 10 3 1 7 11 8 2

转载地址:http://zktkl.baihongyu.com/

你可能感兴趣的文章
乐观锁和悲观锁【转】
查看>>
抵制长假,呼唤年假!
查看>>
Linux的安装
查看>>
修復 “Failed to bring up eth0″ in Ubuntu virtualbox
查看>>
发现linux主机再用代理上网的情况下不能用wget从外网下载资源
查看>>
查找链表中倒数第k个结点
查看>>
不只是技术!成为IT经理必备的十大软技能
查看>>
基于AgileEAS.NET SOA 平台SAAS架构技术的开源分销ERP系统-SmartERP.NET下载配置说明
查看>>
16个时髦的扁平化设计的 HTML5 & CSS3 网站模板
查看>>
c++工厂模式(Factory method)
查看>>
[RGEOS]空间拓扑关系
查看>>
java_queue
查看>>
JavaScript escape encodeURI
查看>>
Exchange模式功能
查看>>
Tomcat性能优化(二) 启动参数设置
查看>>
Today See>
查看>>
kiddouk/redisco
查看>>
THEOS makefile
查看>>
基本名字与地址转换
查看>>
深入理解javascript闭包
查看>>