根据树的前序遍历和中序遍历构造树,输出后序遍历

<?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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值