1. 二叉树的深度:
  2. 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
  3.  
  4. 思路:
  5. 1.非递归层序遍历
  6. 2.使用辅助队列,根结点先入队列
  7. 3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点
  8. 4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列
  9.  
  10. TreeDepth(tree)
  11. if !tree return 0
  12. array_push(queue,tree);
  13. depth=0
  14. while(!empty(queue)){
  15. ++depth
  16. for i=0;i<queue.size;i++
  17. node=array_pop(queue)
  18. array_push(queue,node->left);
  19. array_push(queue,node->right);
  20. return depth
  1. <?php
  2. class TreeNode{
  3. var $val;
  4. var $left = NULL;
  5. var $right = NULL;
  6. function __construct($val){
  7. $this->val = $val;
  8. }
  9. }
  10. function TreeDepth($tree)
  11. {
  12. if(!$tree) return 0;
  13. $queue=array();
  14. array_push($queue,$tree);//在数组最后添加元素
  15. $depth=0;
  16. while(!empty($queue)){
  17. $depth++;
  18. $size=count($queue);
  19.  
  20. for($i=0;$i<$size;$i++){
  21. $node=array_shift($queue);//非常重要 删除第一个元素
  22. if($node->left){
  23. array_push($queue,$node->left);
  24. }
  25. if($node->right){
  26. array_push($queue,$node->right);
  27. }
  28. }
  29. }
  30. return $depth;
  31. }
  32.  
  33. $node1=new TreeNode(1);
  34. $node2=new TreeNode(2);
  35. $node3=new TreeNode(3);
  36. $node4=new TreeNode(4);
  37. $node5=new TreeNode(5);
  38. $node6=new TreeNode(6);
  39. $node7=new TreeNode(7);
  40.  
  41. $tree=$node1;
  42. $node1->left=$node2;
  43. $node1->right=$node3;
  44. $node2->left=$node4;
  45. $node2->right=$node5;
  46. $node4->right=$node6;
  47. $node3->left=$node7;
  48.  
  49. var_dump($tree);
  50. $dep=TreeDepth($tree);
  51. var_dump($dep);

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

  1. 编程算法 - 二叉树的深度 代码(C)

    二叉树的深度 代码(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.二叉树的深度

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

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

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

  6. C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解

    剑指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. MySQL八、备份和还原

                MySQL 八.数据库备份和还原       1.二进制日志相关配置     1)查看使用中的二进制日志文件列表,及大小   SHOW {BINARY | MASTER} LO ...

  2. Makefile入门

    相信大家对makefile都不陌生,在Linux下编写程序基本都离不开makefile的编写,我们都知道多个.c文件经过编译器编译后得到多个.o文件,这些文件是互相独立的,但最终我们要得到一个可正常运 ...

  3. Java连接MySQL数据库详细教程(附网盘下载地址)

    准备工具 Eclipse-oxygen-64位 http://pan.baidu.com/s/1gf48FIj MySQL-5.7.17 http://pan.baidu.com/s/1skD14Cl ...

  4. Codeforces828 C. String Reconstruction

    C. String Reconstruction time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. ESP32 windows开发环境的搭建(官方方法)

    首先保证电脑中的已经下载了git客户端,没有的自行去https://git-scm.com/下载 STEP1: 获得编译工具链 Windows没有内置的“make”环境,所以安装工具链你将需要一个兼容 ...

  6. SOPC与 hello world

    本次设计实验源码位于:http://download.csdn.net/detail/noticeable/9922865 实验目的:通过系统的搭建进一步了解FPGA的SOPC开发流程,并借此了姐pl ...

  7. windows 批处理语言学习

    程序员应该根植于心的一个理念是:重复的工作交给代码.windows上的批处理脚本就是这种理念的体现. 批处理bat能做的事很多,自动配置vs工程中的代码依赖环境,调用其它程序处理数据.自动编译代码等等 ...

  8. Monkey测试简介【转载】

    转载:https://www.xuebuyuan.com/3182523.html 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸 ...

  9. LeNet,AlexNet,GoogleLeNet,VggNet等网络对比

    CNN的发展史 上一篇回顾讲的是2006年Hinton他们的Science Paper,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服.当时有流传的段 ...

  10. Centos 执行top命令详细解读

    1.作用:top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式:top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数: d:指定更新的间隔,以 ...