php如何利用递归实现二叉树的创建

企鹅博客
企鹅博客
企鹅博客
29583
文章
0
评论
2020年9月14日23:06:16 评论 20 views 977字阅读3分15秒

本篇文章给大家带来的内容是关于php如何利用递归实现二叉树的创建,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作

if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}

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

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

php如何利用递归实现二叉树的创建

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

以上就是php如何利用递归实现二叉树的创建的详细内容,更多请关注php教程网其它相关文章!

继续阅读
weinxin
欢迎加入中国站长博客之家
本站的所有资源都会上传分享到博客之家,希望大家互相学习交流进步。
java 环境变量 MYSQL环境变量设置方法 php教程

java 环境变量 MYSQL环境变量设置方法

mysql环境变量设置(windows环境) 1、对于命令控来说,在cmd命令下行下操作很方便,但有时需要直接在命令行床空执行mysql这样的命令,会出现”mysql不是内部或外部命令“这样的错误提示...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: