php 实现二叉树的最大深度_PHP 实现二叉树
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 实现二叉树相关推荐
- php 实现二叉树的最大深度_PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)...
前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历.中序遍历.后序遍历.具体说明如下: 前序遍 ...
- php 实现二叉树的最大深度_python实现二叉树的遍历以及其他基本操作
主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径. 首先,先定义二叉树类(python3),代码如下: class TreeNo ...
- 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)
这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...
- 二叉树的深度_Golang面试题:二叉树的最大深度
问题:求二叉树的最大深度 给定一个二叉树,返回其最大深度. 示例: 1 / 2 3 / / 4 5 6 7 返回最大深度为3 解题思路 利用深度优先或者广度优先遍历二叉树,找到树的最大深度. 二叉树的 ...
- LeetCode 102二叉树的层序遍历103二叉树锯齿形遍历104二叉树的最大深度
微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 97交错字符串(动态规划) LeetCode 98验证 ...
- 104. 二叉树的最大深度 golang
104. 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...
- 104. 二叉树的最大深度 golang DFS
题目 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null ...
- Leetcode—— 104. 二叉树的最大深度
104. 二叉树的最大深度 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...
- 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列
72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...
最新文章
- 什么场景使用mysql的存储过程_mysql存储过程的使用
- python中lambda函数_python中的lambda函数用法
- Java黑皮书课后题第5章:**5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+……1/(根624+根625)
- 【HDU - 5672】String(尺取法)
- C++获取多维数组维数
- Tomcat xxx unbound
- 在IDEA中安装使用Antlr
- PHP操作Memcache基本函数的方法
- 并发编程-基础概念介绍
- qt 读取mysql数据库_qt 读取mysql数据库
- win10的任务管理器显示所占内存,比实际占用内存小的原因
- One Drive 回收站文件太多时无法清空回收站解决办法
- web前端网页设计与制作:HTML+CSS旅游网页设计——桂林旅游(3页) web前端旅游风景网页设计与制作 div静态网页设计
- 2021 TWeb 腾讯前端技术大会精彩回顾(附PPT)
- 【论文阅读】时间序列中的变量是一张知识图谱
- 软件开发生命周期各阶段的任务
- caffe2及Detectron环境搭建
- CTF-Misc-二维码(一)
- 可以降低汽车气缸里面的机油由于摩擦产生的蓝烟的机油添加剂
- Oxygen PDF Chemistry转换场景的处理器