PHP递归方法实现前序、中序、后序遍历二叉树
二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。
<?php namespace app\data_structure\tree; /** * php递归方法方法实现前序、中序、后序遍历二叉树 * 二叉树是每个节点最多有两个子树的树结构。通常子树被称作"左子树"(left subtree)和"右子树"(right subtree) * https://www.cnblogs.com/rxbook/p/10441931.html */ class BinaryTree1 { public $value; public $left; public $right; } /** * 前序遍历 * 根节点 ---> 左子树 ---> 右子树 */ function preorder($root) { if (empty($root)) { return; } echo $root->value . ' ';//输出根节点 preOrder($root->left); preOrder($root->right); } /** * 中序遍历 * 左子树---> 根节点 ---> 右子树 */ function inorder($root) { if (empty($root)) { return; } inorder($root->left); echo $root->value . ' ';//输出根节点 inorder($root->right); } /** * 后序遍历 * 左子树 ---> 右子树 ---> 根节点 */ function tailorder($root) { if (empty($root)) { return; } tailorder($root->left); tailorder($root->right); echo $root->value . ' ';//输出根节点 } //测试 $a = new BinaryTree1(); $b = new BinaryTree1(); $c = new BinaryTree1(); $d = new BinaryTree1(); $e = new BinaryTree1(); $f = new BinaryTree1(); $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; echo "php递归方法实现前序、中序、后序遍历二叉树: \n"; echo "前序遍历:"; preorder($a); //A B D C E F echo "\n"; echo "中序遍历:"; inorder($a);//D B A E C F echo "\n"; echo "后序遍历:"; tailorder($a);//D B E F C A echo "\n";
结果: