<?php
//二叉树的遍历 class Node{ public $value; public $left; public $right; } //先序遍历 根节点 --->左节点 --->右节点 function preorder ($root) { $stack = array(); array_push($stack,$root); while(!empty($stack)) { $center_node = array_pop($stack); //数组的压入与弹出是以栈道的形式表现的先进后出 echo $center_node->value.' '; if (!empty($center_node->right)) { array_push($stack, $center_node->right); } if (!empty($center_node->left)) { array_push($stack, $center_node->left); } } } //中序遍历 左节点--->根节点--->右节点 function inorder ($root) { $stack = array(); $center_node = $root; while (!empty($stack) || $center_node != null) { while ($center_node != null) { array_push($stack,$center_node); $center_node = $center_node->left; } $center_node = array_pop($stack); echo $center_node->value; $center_node = $center_node->right; } } //后序遍历 左节点--->右节点--->根节点 function tailorder ($root) { $stack = array(); $outstack = array(); array_push($stack, $root); while ($stack != null) { $center_node = array_pop($stack); array_push($outstack, $center_node); //先压入根节点 if ($center_node->left != null) { array_push($stack, $center_node->left); } if ($center_node->right != null) { array_push($stack,$center_node->right); } } while (!empty($outstack)) { $center_node = array_pop($outstack); echo $center_node->value; } } $a=new Node(); $b=new Node(); $c=new Node(); $d=new Node(); $e=new Node(); $f=new Node(); $a->value = 'A'; $b->value = 'B'; $c->value = 'C'; $d->value = 'D'; $e->value = 'E'; $f->value = 'F'; $a->left = $b; $a->right = $c; $b->left = $d; $c->left = $e; $c->right = $f; tailorder($a); ?>