给出一棵二叉树,返回这棵树的中序遍历。备注:递归的解法太没有新意了,你能用迭代的方法来解这道题吗?
<?php
class Node {
public $left = null;
public $right = null;
public $val;
public function __construct($val) {
$this->val = $val;
}
}
/**
* @param $head
* 非递归中序遍历
*/
function inorderTraversal($head) {
if (is_null($head)) {
return;
}
$arrNode = array();
array_push($arrNode, $head);
$node = $head->left;
while (!empty($arrNode)) {
while (!is_null($node)) {
array_push($arrNode, $node);
$node = $node->left;
}
if (!empty($arrNode)) {
$node = array_pop($arrNode);
print $node->val . "\t";
if (!is_null($node->right)) {
array_push($arrNode, $node->right);
$node = $node->right->left;
}
$node = null;
}
}
}
$node1 = new Node(1);
$node2 = new Node(2);
$node3 = new Node(3);
$node1->left = $node2;
$node1->right = $node3;
inorderTraversal($node1);