[PHP]算法- 二叉树的深度的PHP实现

时间:2023-01-06 08:27:16
二叉树的深度:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 思路:
1.非递归层序遍历
2.使用辅助队列,根结点先入队列
3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点
4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列 TreeDepth(tree)
if !tree return 0
array_push(queue,tree);
depth=0
while(!empty(queue)){
++depth
for i=0;i<queue.size;i++
node=array_pop(queue)
array_push(queue,node->left);
array_push(queue,node->right);
return depth
<?php
class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}
function TreeDepth($tree)
{
if(!$tree) return 0;
$queue=array();
array_push($queue,$tree);//在数组最后添加元素
$depth=0;
while(!empty($queue)){
$depth++;
$size=count($queue); for($i=0;$i<$size;$i++){
$node=array_shift($queue);//非常重要 删除第一个元素
if($node->left){
array_push($queue,$node->left);
}
if($node->right){
array_push($queue,$node->right);
}
}
}
return $depth;
} $node1=new TreeNode(1);
$node2=new TreeNode(2);
$node3=new TreeNode(3);
$node4=new TreeNode(4);
$node5=new TreeNode(5);
$node6=new TreeNode(6);
$node7=new TreeNode(7); $tree=$node1;
$node1->left=$node2;
$node1->right=$node3;
$node2->left=$node4;
$node2->right=$node5;
$node4->right=$node6;
$node3->left=$node7; var_dump($tree);
$dep=TreeDepth($tree);
var_dump($dep);

[PHP]算法- 二叉树的深度的PHP实现的更多相关文章

  1. 编程算法 - 二叉树的深度 代码&lpar;C&rpar;

    二叉树的深度 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一棵二叉树的根节点, 求该树的深度. 依次选择最深的左右子树, 然后递归加1. ...

  2. php求二叉树的深度(1、二叉树就可以递归,因为结构和子结构太相似)(2、谋而后动,算法想清楚,很好过的)

    php求二叉树的深度(1.二叉树就可以递归,因为结构和子结构太相似)(2.谋而后动,算法想清楚,很好过的) 一.总结 1.二叉树就可以递归,因为结构和子结构太相似 2.谋而后动,算法想清楚,很好过的 ...

  3. 剑指Offer面试题39(Java版):二叉树的深度

    题目:输入一棵二叉树的根节点,求该数的深度. 从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度. 比如.例如以下图的二叉树的深度为4.由于它从根节点到叶结点的最 ...

  4. 剑指Offer面试题:33&period;二叉树的深度

    一.题目一:二叉树的深度 1.1 题目说明 题目一:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如下图中的二叉树的 ...

  5. javascript数据结构与算法-- 二叉树

    javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...

  6. C&plus;&plus;版 - 剑指Offer 面试题39:二叉树的深度&lpar;高度&rpar;&lpar;二叉树深度优先遍历dfs的应用&rpar; 题解

    剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...

  7. 《剑指offer》第五十五题(二叉树的深度)

    // 面试题55(一):二叉树的深度 // 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的 // 结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. //如果左右 ...

  8. javascript数据结构与算法---二叉树(删除节点)

    javascript数据结构与算法---二叉树(删除节点) function Node(data,left,right) { this.data = data; this.left = left; t ...

  9. javascript数据结构与算法---二叉树(查找最小值、最大值、给定值)

    javascript数据结构与算法---二叉树(查找最小值.最大值.给定值) function Node(data,left,right) { this.data = data; this.left ...

随机推荐

  1. selec2 clone不起作用。

    <table class="table table-bordered"> <thead> <tr> <th width ="16 ...

  2. Android移动应用开发中常见的经验技巧总结

    转:http://wwwdevstorecn/essay/essayInfo/6128.html 1. 对话保持的解决方案. 要求: 1.app中使用webview访问具体网站的内容,但是app与服务 ...

  3. 基于&period;NET CORE微服务框架 -Api网关服务管理

    1.前言 经过10多天的努力,surging 网关已经有了大致的雏形,后面还会持续更新完善,请大家持续关注研发的动态 最近也更新了surging新的版本 更新内容: 1. 扩展Zookeeper封装2 ...

  4. 转载 Java基本数据类型

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  5. CXF-02&colon; 使用CXF处理JavaBean式的复合类型和List集合类型

    Cat.java: package com.war3.ws.domain; public class Cat { private Integer id; private String name; pr ...

  6. Java基础语法入门

    一.Java运行原理 写好java代码,执行javac命令,通过jvm把.java源文件编译成.class文件,执行java命令把字节码文件编译成特定平台能识别的机器码 二.标识符 1.标识符是用于数 ...

  7. JS图片验证码

    !(function(window, document) { var size = 5;//设置验证码长度 function GVerify(options) { //创建一个图形验证码对象,接收op ...

  8. Usefull Resources

    Sql Server Profiler 1. http://www.cnblogs.com/Fooo/archive/2013/02/19/2916789.html 2. http://5439255 ...

  9. 使用rviz 查看远程主机

    一.安装好ros环境 https://www.cnblogs.com/sea-stream/p/9809590.html 二.配置参数 vim ~/.bashrc #输入内容 export ROS_H ...

  10. Unity3D NGUI Sprite精灵动画

    NGUI 2.6.1下载: part1 part2 NGUI 实现Sprite精灵动画很简单: 1.先制作图像集合.打开NGUI菜单下Atlas Maker,选中切好的图片,点击Add/Update按 ...