您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關PHP如何根據樹的前序遍歷和中序遍歷構造樹并輸出后序遍歷,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
具體如下:
先來看看前序遍歷、中序遍歷與后序遍歷原理圖:
根據樹的前序遍歷和中序遍歷構造樹并輸出后序遍歷代碼如下:
<?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如何根據樹的前序遍歷和中序遍歷構造樹并輸出后序遍歷”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。