1 <?php

2

3 /*----------------

4 + 二叉树

5 ----------------*/

6

7 class BTree

8 {

9 // 数据域

10 protected $data;

11 // 左子树

12 protected $leftNode;

13 // 右子树

14 protected $rightNode;

15

16 public function __construct($data = 0)

17 {

18 $this->data = $data;

19 }

20

21 /**

22 * @param object $leftNode

23 */

24 public function setLeftNode(BTree $leftNode = null)

25 {

26 $this->leftNode = $leftNode;

27 }

28

29 /**

30 * @param object $rightNode

31 */

32 public function setRightNode(BTree $rightNode = null)

33 {

34 $this->rightNode = $rightNode;

35 }

36

37 public function getLeftNode()

38 {

39 // 判断自己瞎写的,当访问子节点不存在的时候,就重新实例化当前节点,data默认赋值为0,表示空节点。反正能够表示子节点不存在哈哈

40 if (!isset($this->leftNode)) {

41 return new self;

42 }

43 return $this->leftNode;

44 }

45

46 public function getRightNode()

47 {

48 if (!isset($this->leftNode)) {

49 return new self;

50 }

51 return $this->rightNode;

52 }

53

54 public function getData()

55 {

56 return $this->data;

57 }

58 }

59

60 $rootNode = new BTree(1);

61 $zuo1Node = new BTree(2);

62 $you1Node = new BTree(3);

63 $zuo21Node = new BTree(4);

64 $you21Node = new BTree(5);

65 $zuo22Node = new BTree(6);

66 $rootNode->setLeftNode($zuo1Node);

67 $rootNode->setRightNode($you1Node);

68 $zuo1Node->setLeftNode($zuo21Node);

69 $zuo1Node->setRightNode($you21Node);

70 $you1Node->setLeftNode($zuo22Node);

71 echo ‘访问的节点不存在时,返回空,0表示空节点,或者设置为null也行.
‘;

72 print_r($rootNode->getLeftNode()->getLeftNode()->getRightNode()->getData());

73 echo "
访问存在的节点,可以正常获取数据
";

74 print_r($rootNode->getLeftNode()->getRightNode()->getData());

php 实现二叉树的最大深度_PHP 实现二叉树相关推荐

  1. php 实现二叉树的最大深度_PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)...

    前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历.中序遍历.后序遍历.具体说明如下: 前序遍 ...

  2. php 实现二叉树的最大深度_python实现二叉树的遍历以及其他基本操作

    主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径. 首先,先定义二叉树类(python3),代码如下: class TreeNo ...

  3. 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)

    这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...

  4. 二叉树的深度_Golang面试题:二叉树的最大深度

    问题:求二叉树的最大深度 给定一个二叉树,返回其最大深度. 示例: 1 / 2 3 / / 4 5 6 7 返回最大深度为3 解题思路 利用深度优先或者广度优先遍历二叉树,找到树的最大深度. 二叉树的 ...

  5. LeetCode 102二叉树的层序遍历103二叉树锯齿形遍历104二叉树的最大深度

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 97交错字符串(动态规划) LeetCode 98验证 ...

  6. 104. 二叉树的最大深度 golang

    104. 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...

  7. 104. 二叉树的最大深度 golang DFS

    题目 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null ...

  8. Leetcode—— 104. 二叉树的最大深度

    104. 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...

  9. 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列

    72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...

最新文章

  1. 什么场景使用mysql的存储过程_mysql存储过程的使用
  2. python中lambda函数_python中的lambda函数用法
  3. Java黑皮书课后题第5章:**5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+……1/(根624+根625)
  4. 【HDU - 5672】String(尺取法)
  5. C++获取多维数组维数
  6. Tomcat xxx unbound
  7. 在IDEA中安装使用Antlr
  8. PHP操作Memcache基本函数的方法
  9. 并发编程-基础概念介绍
  10. qt 读取mysql数据库_qt 读取mysql数据库
  11. win10的任务管理器显示所占内存,比实际占用内存小的原因
  12. One Drive 回收站文件太多时无法清空回收站解决办法
  13. web前端网页设计与制作:HTML+CSS旅游网页设计——桂林旅游(3页) web前端旅游风景网页设计与制作 div静态网页设计
  14. 2021 TWeb 腾讯前端技术大会精彩回顾(附PPT)
  15. 【论文阅读】时间序列中的变量是一张知识图谱
  16. 软件开发生命周期各阶段的任务
  17. caffe2及Detectron环境搭建
  18. CTF-Misc-二维码(一)
  19. 可以降低汽车气缸里面的机油由于摩擦产生的蓝烟的机油添加剂
  20. Oxygen PDF Chemistry转换场景的处理器

热门文章

  1. OpenCV形态学变换函数morphologyEx()闭运算的使用
  2. 传神成进博会唯一指定智能翻译硬件提供商 力助无障碍沟通
  3. 万国数据联合阿里云发布混合云系列产品 助力企业落地云端
  4. RHEL6.5/Centos6.5 搭建bugzilla
  5. 自定义AlertDialog布局
  6. 对于Activity的理解
  7. Access注入偏移爆字段
  8. python中argsort,sort 和 sorted,operator.itemgetter函数
  9. 使用timer定时器,防止事件重入
  10. Spring Bean引用例子