1. 程式人生 > >面試題7:重建二叉樹

面試題7:重建二叉樹

style ext str null value var int cti 二叉樹

<?php
header("content-type:text/html;charset=utf-8");
/*
 *重建二叉樹 P62
 */
class TreeNode
{
    var $val;
    var $left = NULL;
    var $right = NULL;

    function __construct($val)
    {
        $this->val = $val;
    }
}
function reConstructBinaryTree($pre, $vin)
{
    if($pre == null || $vin == null
){ return false; } $rootValue = $pre[0]; $root = new TreeNode($rootValue); $index = array_search($pre[0],$vin); $pre_left = array_slice($pre,1,$index); //1是數組的截取的起始索引位置,index是截取的長度,而不是截取的結束索引位置!!!並且截取之後原數組pre的長度不變 $vin_left = array_slice($vin,0,$index); $root->left = reConstructBinaryTree($pre_left
,$vin_left); $pre_right = array_slice($pre,$index + 1); $vin_right = array_slice($vin,$index + 1); $root->right = reConstructBinaryTree($pre_right,$vin_right); return $root; } $pre = array(1,2,4,7,3,5,6,8); $vin = array(4,7,2,1,5,3,8,6); print_r(reConstructBinaryTree($pre,$vin
));

面試題7:重建二叉樹