最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP根據(jù)樹(shù)的前序遍歷和中序遍歷構(gòu)造樹(shù)并輸出后序遍歷的方法

 更新時(shí)間:2017年11月10日 11:24:28   作者:幻世2012  
這篇文章主要介紹了PHP根據(jù)樹(shù)的前序遍歷和中序遍歷構(gòu)造樹(shù)并輸出后序遍歷的方法,涉及php數(shù)據(jù)結(jié)構(gòu)與算法中關(guān)于數(shù)的遍歷相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP根據(jù)樹(shù)的前序遍歷和中序遍歷構(gòu)造樹(shù)并輸出后序遍歷的方法。分享給大家供大家參考,具體如下:

先來(lái)看看前序遍歷、中序遍歷與后序遍歷原理圖:

根據(jù)樹(shù)的前序遍歷和中序遍歷構(gòu)造樹(shù)并輸出后序遍歷代碼如下:

<?php
class BinaryTreeNode{
  public $m_value;
  public $m_left;
  public $m_right;
}
function ConstructCore($preorder,$inorder){
  if(count($preorder)!=count($inorder) || count($preorder)==0 || count($inorder)==0)
  return null;
  $headNode=new BinaryTreeNode;
  $headNode->m_value=$preorder[0];
  if(count($preorder)==1){
    $headNode->m_left=null;
    $headNode->m_right=null;
    return $headNode;
  }
  array_shift($preorder);
  $pos=array_search($headNode->m_value,$inorder);
  $leftin=array_slice($inorder,0,$pos);
  $rightin=array_slice($inorder,$pos+1);
  $leftpre=array_slice($preorder,0,$pos);
  $rightpre=array_slice($preorder,$pos);
  $headNode->m_left=ConstructCore($leftpre,$leftin);
  $headNode->m_right=ConstructCore($rightpre,$rightin);
  return $headNode;
}
$pre=array(1,2,4,7,3,5,6,8);
$in=array(4,7,2,1,5,3,8,6);
$tree=ConstructCore($pre,$in);
function tail($tree){
  if($tree->m_right!=null)
  echo tail($tree->m_right);
  if($tree->m_left!=null)
  echo tail($tree->m_left);
    echo $tree->m_value;
}
tail($tree);
?>

運(yùn)行結(jié)果:

86537421

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

开封县| 瑞安市| 怀来县| 濮阳县| 屏东市| 黄浦区| 芜湖县| 金湖县| 大埔县| 克拉玛依市| 弥勒县| 营山县| 天全县| 宜丰县| 杭锦旗| 雅安市| 连城县| 醴陵市| 会东县| 沂水县| 盐城市| 永昌县| 博湖县| 永宁县| 石泉县| 武平县| 拉孜县| 龙山县| 叶城县| 双柏县| 故城县| 沙田区| 鄂尔多斯市| 镇雄县| 五原县| 钟祥市| 青冈县| 咸宁市| 伊金霍洛旗| 镇平县| 东乌|