评论

收藏

[PHP] PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法

开发技术 开发技术 发布于:2021-08-21 15:39 | 阅读数:344 | 评论:0

本文实例讲述了PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法。分享给大家供大家参考,具体如下:
先来看看前序遍历、中序遍历与后序遍历原理图:
DSC0000.jpg

根据树的前序遍历和中序遍历构造树并输出后序遍历代码如下:
<?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);
?>
运行结果:
86537421
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://blog.csdn.net/jingbing082619/article/details/47373147

关注下面的标签,发现更多相似文章