专栏首页陶士涵的菜地[PHP] 数据结构-二叉树的创建PHP实现

[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
  }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [PHP] 算法-统计一个数字在排序数组中出现的次数的PHP实现

    陶士涵
  • [PHP] 数据结构-反转链表PHP实现

    1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头 2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头 3.old-...

    陶士涵
  • [PHP] 算法-请找出带环链表的环的入口结点的PHP实现

    陶士涵
  • 掌握此心法,可以纵横 Numpy 世界而无大碍

    检查一个 ndarray 数据的维度和大小,分别用 ndim 和 shape 属性。

    崔庆才
  • python字符串类型

    字符串长度 >>> a = 'hello python'>>> len(a)12 字符串取值从0开始 >>> a[0]'h' >>> a[1]'e' >>> a...

    零月
  • 深度学习推荐系统中各类流行的Embedding方法(上)

    Embedding,中文直译为“嵌入”,常被翻译为“向量化”或者“向量映射”。在整个深度学习框架中都是十分重要的“基本操作”,不论是NLP(Natural La...

    OpenCV学堂
  • 插入、归并、堆、count、radix、快速排序算法运行时间

    把一个数组拆成左右两个部分,一直到不可拆分,然后对左右两个数组进行合并,合并方式为,新建左右两个数组来存储原有的左右数据,然后使用两个索引分别指向左右两个数组,...

    爬蜥
  • 深入浅出机器学习中的决策树(一)

    以下材料最好用Jupyter notebook 阅读,如果您克隆course repository,可以使用Jupyter在本地复制。

    银河1号
  • 比特币多种输出脚本(outputScript,scriptPubKey)介绍

    目前可见outputScript(scriptPubKey)格式:(参考https://bitcoin.stackexchange.com/questions/...

    sickworm
  • 解决VMware虚拟机搭建linux、win环境时遇到网络桥接无法使用、NAT网络正常访问的情况。

    使用NAT网络是VM虚拟出来的网段,可供直接上网。但在某些情况下需要虚拟机中的系统访问和物理机一样的局域网就要使用桥接的访问,让虚拟机中的系统也可以跟物理机一...

    96php.cn

扫码关注云+社区

领取腾讯云代金券