function traverseTree($rootNode) { if ($rootNode->left != null) { traverseTree($rootNode->left); } if ($rootNode->right != null) { traverseTree($rootNode->right); } echo $rootNode->data; }
function traverseTree($tree, $startNode) { if (is_numeric($startNode)) { return (int) $startNode; } else { if (array_key_exists($startNode, $GLOBALS['calculated'])) { return (int) $GLOBALS['calculated'][$startNode]; } else { $result = 0; $thisNode = $tree[$startNode]; if (is_array($thisNode)) { switch ($thisNode[0]) { case "NOT": $result = log_not(traverseTree($tree, $thisNode[1])); break; case "AND": $result = (int) traverseTree($tree, $thisNode[1]) & (int) traverseTree($tree, $thisNode[2]); break; case "OR": $result = (int) traverseTree($tree, $thisNode[1]) | (int) traverseTree($tree, $thisNode[2]); break; case "RSHIFT": $result = (int) traverseTree($tree, $thisNode[1]) >> (int) $thisNode[2]; break; case "LSHIFT": $result = (int) traverseTree($tree, $thisNode[1]) << (int) $thisNode[2]; break; default: die("Do not enter default!"); } } else { if (is_numeric($thisNode)) { $result = $thisNode; } else { $result = (int) traverseTree($tree, $thisNode); } } $GLOBALS['calculated'][$startNode] = $result; return $result; } } }