博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误)...
阅读量:6633 次
发布时间:2019-06-25

本文共 2916 字,大约阅读时间需要 9 分钟。

php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误

一、总结

要点:a、层次遍历(队列)  b、层次遍历中的层次(孩子在父亲的层次上面加1)

另外一种:

1、求每一层的时候:用的是计算开始时当前队列中元素的个数,用两层while

谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误

 

二、php实现把二叉树打印成多行

题目描述:

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

 

三、代码

代码一:

1 链接:https://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288 2 来源:牛客网 3  4 层次遍历 5   6 class Solution { 7 public: 8         vector
> Print(TreeNode* pRoot) { 9             vector
> vec;10             if(pRoot == NULL) return vec;11  12             queue
q;13             q.push(pRoot);14  15             while(!q.empty())16             {17                 int lo = 0, hi = q.size();18                 vector
c;19                 while(lo++ < hi)20                 {21                     TreeNode *t = q.front();22                     q.pop();23                     c.push_back(t->val);24                     if(t->left) q.push(t->left);25                     if(t->right) q.push(t->right);26                 }27                 vec.push_back(c);28             }29             return vec;30         }31 };
1 
val = $val; 9 }10 }*/11 function MyPrint($pRoot)12 {13 // write code here14 $q = new SplQueue();15 if(!$pRoot){16 return [];17 }18 $result = []; //1、$result[$i][]19 $i=0;20 $q->push($pRoot);21 while(!$q->isEmpty()){22 $count = $q->count(); //1、求每一层的时候:用的是计算开始时当前队列中元素的个数,用两层while23 while($count--){24 $t = $q->shift();25 if($t){26 $result[$i][] = $t->val;27 $q->push($t->left);28 $q->push($t->right);29 }30 }31 $i++;32 }33 return $result;34 }

 

 

代码二:谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误

1 
val = $val; 9 }10 }*/11 //算法:树的层次遍历(队列12 //这里每层一行输出,所以需要判断层次,所以每个节点加一个遍历判断层次即可13 function MyPrint($pRoot){14 if(!$pRoot) return [];15 $preCenci=1;16 $ansLine=array();17 $ans=array();18 $queue=array();//队列19 $queCenci=array();//队列层次20 array_push($queCenci,1);21 array_push($queue,$pRoot);22 while(!empty($queue)){23 $node=array_shift($queue);24 $cenci=array_shift($queCenci);25 if($cenci!=$preCenci){26 $ans[]=$ansLine;27 $ansLine=array();28 $ansLine[]=$node->val;29 $preCenci=$cenci;30 }else{31 $ansLine[]=$node->val;32 $preCenci=$cenci;33 }34 if($node->left) { array_push($queue,$node->left); array_push($queCenci,$cenci+1);}35 if($node->right) { array_push($queue,$node->right); array_push($queCenci,$cenci+1);} //1、这里写成了$queue36 }37 return $ans; //2、函数里面就是return,而不是echo38 }

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9068535.html

你可能感兴趣的文章
Redis安装
查看>>
dorado中的creationType选择类型
查看>>
java.utils.HashMap数据结构分析(转)
查看>>
JAVA思维导图系列:多线程0基础
查看>>
[转]搭建Maven私服
查看>>
Java NIO与IO
查看>>
实现两个数相加不用四则运算
查看>>
spring中配置了事务,数据业务层捕获异常,事务配置不成功?
查看>>
安卓开发之探秘蓝牙隐藏API(转)
查看>>
配置虚拟机网络的三种方式
查看>>
强大的模板引擎开源软件NVelocity
查看>>
ViewPager的简单用法+适配器+监听器的介绍
查看>>
Tomcat全攻略
查看>>
(转)SDL 1.2 to 2.0 Migration Guide--SDL1.2更新到SDL2.0指南
查看>>
RMAN-FORMAT-CONFIGURE及动态性能表
查看>>
微软最牛MS08-067漏洞各系统补丁下载地址
查看>>
JSP验证码
查看>>
C# 导出CSV功能记录下
查看>>
WebGL 入门-WebGL简介与3D图形学
查看>>
memset函数具体说明
查看>>