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

  

  

转载于:https://www.cnblogs.com/taoshihan/p/9558899.html

[PHP] 数据结构-二叉树的创建PHP实现相关推荐

  1. 数据结构--二叉树的创建和相关操作

    下面给出两个关于二叉树的题目: 1.编写程序任意输入二叉树的结点个数和结点值,构造一棵二叉树,采用三种递归遍历算法(前序.中序.后序)对这棵二叉树进行遍历并计算出二叉树的高度. 2 .编写程序生成下面 ...

  2. Python写数据结构:二叉树的创建和遍历

    #!/usr/bin/python3.5 #_*_coding:utf-8_*_class Node:def __init__(self,value):self.data = valueself.lc ...

  3. 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树

    [本文谢绝转载,原文来自http://990487026.blog.51cto.com] 树 数据结构与算法 3:二叉树,遍历,创建,释放,拷贝,求高度,面试,线索树二叉树的创建,关系建立二叉树的创建 ...

  4. 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历

    前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...

  5. 二叉树的创建(数据结构) C语言版

    目录 一.二叉树的存储结构 二.二叉树的创建 三.二叉树的遍历 1.先序遍历 2.中序遍历 3.后序遍历 4.层序遍历 一.二叉树的存储结构 二叉树的基本存储结构如下所示 leftchild:存储左孩 ...

  6. 数据结构——二叉树的遍历

    "树"是一种重要的数据结构,本文浅谈二叉树的遍历问题,採用C语言描写叙述. 一.二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每一个结点仅仅有一个父结点,最多含有两个子节点 ...

  7. 数据结构 - 二叉树 - 面试中常见的二叉树算法题

    数据结构 - 二叉树 - 面试中常见的二叉树算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图 ...

  8. 数据结构——二叉树的递归算法

    二叉树的结构定义: typedef struct BiNode {TElemType data;struct BiNode *lchild;struct BiNode *rchild; }BiNode ...

  9. 数据结构——二叉树的层次遍历进阶

    之前的一个博客 数据结构--二叉树的层次遍历看完这个,可以简单实现下面的问题 问题: 1.计算二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值. 2.用按层次顺序遍历二叉树的方法, ...

最新文章

  1. redis在linux搭建集群,Linux/Centos 7 redis4 集群搭建
  2. 操作系统进程学习(Linux 内核学习笔记)
  3. math 向上取整_自我说明:关于Math和File类的具体说明.
  4. 必知必会 | WebView 的一切都在这儿
  5. python tkinter输入框_python tkinter-按钮.标签.文本框、输入框
  6. winform 显示分隔控件_(八十)c#Winform自定义控件-分割线标签-HZHControls
  7. 简单工厂模式和策略模式的区别
  8. Mysql Like 性能优化总结
  9. access 分表存储_数据库分区、分表、分库、分片
  10. Studio 3T无限试用
  11. 青春-转自韩寒Sina Blog
  12. 海胆状金纳米颗粒,粒径:150-200nm|银包金纳米颗粒 粒径:5-200nm|碳包金纳米颗粒 粒径:可定制
  13. 被误解的鸟枪换炮:实体资产通证化没那么容易
  14. android studio中的模拟器,使用Android Studio创建Andorid模拟器
  15. 爬取了知乎2.2亿阅读量 “有漂亮女朋友是什么体验“,结果发现...
  16. 游戏王,查卡器,编号,开源,代码,OCG,程序
  17. 京东校招java面试题_京东2018校招编程题解答(Java)
  18. 正则表达式的介绍及应用
  19. case zhen语句_SQL中的条件判断语句(case when zhen if,ifnull)用法
  20. 工程提示Unfortunately you can‘t have non-Gradle Java modules and > Android-Gradle modules in one project

热门文章

  1. Ubuntu11.10 源码编译 Nginx
  2. 安装/卸载.deb文件
  3. 下班前网上搜集的方法哈哈
  4. 【截至2006.12.31】毒霸反间谍可清除的部分流氓软件清单
  5. python3-知识扩展扫盲易忘-generator的用法
  6. Amazon behavior question
  7. javamail发送邮件(转)
  8. 基于R语言实现的交通时空大数据处理
  9. Javascript事件模型系列(一)事件及事件的三种模型
  10. luoguP4705 玩游戏