题解 | #实现二叉树先序,中序和后序遍历#
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362
<?php
/*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
function threeOrders( $root )
{
$result = $result1 = $result2 = $result3 = [];
$root1 = $root2 = $root3 = $root;
preOrders($root1,$result1);
midOrders($root2,$result2);
postOrders($root3,$result3);
$result[] = $result1;
$result[] = $result2;
$result[] = $result3;
return $result;
}
//利用参数引用
function preOrders($root,&$prelist){
if ($root == null) {
return;
}
$prelist[] = $root->val;
preOrders($root->left,$prelist);
preOrders($root->right,$prelist);
}
//利用参数引用
function midOrders($root,&$midlist){
if ($root == null) {
return;
}
midOrders($root->left,$midlist);
$midlist[] = $root->val;
midOrders($root->right,$midlist);
}
//利用参数引用
function postOrders($root,&$postlist){
if ($root == null) {
return;
}
postOrders($root->left,$postlist);
postOrders($root->right,$postlist);
$postlist[] = $root->val;
} 

