zoukankan      html  css  js  c++  java
  • [PHP] 数据结构-二叉树的创建PHP实现

    1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作
    if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}

    2.前序遍历:先访问根结点,前序遍历左子树,前序遍历右子树;中左右

    3.将二叉树中每个结点的空指针引出一个虚结点,其值为特定值#,处理二叉树为原二叉树的扩展二叉树,扩展二叉树做到一个遍历序列确定一棵二叉树

    <?php
    class BinTree{
            public $data;
            public $left;
            public $right;
    }
    //前序遍历生成二叉树
    function createBinTree(){
            $handle=fopen("php://stdin","r");
            $e=trim(fgets($handle));
            if($e=="#"){
                    $binTree=null;
            }else{
                    $binTree=new BinTree();
                    $binTree->data=$e;
                    $binTree->left=createBinTree();
                    $binTree->right=createBinTree();
            }   
            return $binTree;
    }    
    
    $tree=createBinTree();
    
    var_dump($tree);
    
    A
    B
    #
    D
    #
    #
    C
    #
    #
    object(BinTree)#1 (3) {
      ["data"]=>
      string(1) "A"
      ["left"]=>
      object(BinTree)#2 (3) {
        ["data"]=>
        string(1) "B"
        ["left"]=>
        NULL
        ["right"]=>
        object(BinTree)#3 (3) {
          ["data"]=>
          string(1) "D"
          ["left"]=>
          NULL
          ["right"]=>
          NULL
        }
      }
      ["right"]=>
      object(BinTree)#4 (3) {
        ["data"]=>
        string(1) "C"
        ["left"]=>
        NULL
        ["right"]=>
        NULL
      }
    }
    

      

      

  • 相关阅读:
    实验5 函数
    实验4 在分支循环结构中调用自定义函数
    Play 内置标签
    POI 正常输出WORD 文档
    用户WORD模板写文件
    Spring 注解过滤
    Spring 循环依赖
    Spring 表单标签
    WebService 客户端生成服务端代码
    Jquery 常用函数
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9558899.html
Copyright © 2011-2022 走看看