zoukankan      html  css  js  c++  java
  • PHP 树的先序,中序,后序遍历

     1 <?php
     2     #树节点
     3     class Node {
     4         public $lc = null;    #左孩子
     5         public $rc = null;    #右孩子
     6         public $val;
     7         
     8         public function __construct($val) {
     9             $this->val = $val;
    10         }
    11     }
    12     
    13     #先序遍历
    14     function preTraverse(Node $root) {
    15         echo $root->val . " ";
    16         if($root->lc != null) preTraverse($root->lc);
    17         if($root->rc != null) preTraverse($root->rc);
    18     }
    19     
    20     #中序遍历
    21     function inTraverse(Node $root) {
    22         if($root->lc != null) inTraverse($root->lc);
    23         echo $root->val . " ";
    24         if($root->rc != null) inTraverse($root->rc);
    25     }
    26     
    27     #后序遍历
    28     function postTraverse(Node $root) {
    29         if($root->lc != null) postTraverse($root->lc);
    30         if($root->rc != null) postTraverse($root->rc);
    31         echo $root->val . " ";
    32     }
    33     
    34     $root = new Node(3);
    35     $node1 = new Node(2);
    36     $node2 = new Node(1);
    37     $node3 = new Node(6);
    38     $node4 = new Node(5);
    39     $node5 = new Node(7);
    40     
    41     $root->lc = $node1;
    42     $root->rc = $node3;
    43     $node1->lc = $node2;
    44     $node3->lc = $node4;
    45     $node3->rc = $node5;
    46     
    47     preTraverse($root);
    48     echo "<br>";
    49     inTraverse($root);
    50     echo "<br>";
    51     postTraverse($root);
    52 ?>

    输出

    3 2 1 6 5 7 
    1 2 3 5 6 7 
    1 2 5 7 6 3

  • 相关阅读:
    【题解】小Z的袜子
    浅谈最小生成树
    【题解】钻石收藏家
    浅谈线段树
    浅谈拓扑排序
    浅谈树的直径和树的重心
    浅谈求逆序对
    浅谈欧拉回路
    浅谈离散化
    浅谈高斯消元
  • 原文地址:https://www.cnblogs.com/zemliu/p/2651781.html
Copyright © 2011-2022 走看看