大家好,今天小编关注到一个比较有意思的话题,就是关于打印二叉树java语言的问题,于是小编就整理了3个相关介绍打印二叉树Java语言的解答,让我们一起看看吧。
二叉树的建立用栈还是队列?
要构建二叉树及对二叉树进行操作首先得构建节点,节点包括节点的值还有它的左右孩子,
对二叉树的操作有构建,遍历(递归,非递归,层次遍历)。栈的特点是先进先出,用栈能保留二叉树的访问路径,所以二叉树的非递归遍历应该用栈来操作,队列是先进后出,用来层次打印二叉树。
想用J***a学习数据结构与算法,我应该掌握J***a到哪种程度?
首先强调一点,数据和算法其实和语言没有太大关系,编程语言只是我们实现算法的工具。这里我为你整理了一份常见的你可以尝试去实现的算法清单:
链表类题目:
2. 链表反转
4. 查到倒数第K个链表节点
5. 求链表的中间节点
6. 划分链表使得所有小于x的节点排在大于等于x的节点之前
7. 合并有序链表
如何高效地增强编程(特别是debug)能力?
提高debug能力,不外乎做好以下两点:
1、善用工具
工欲善其事必先利其器,提高debug能力最快的办法,主流的debug工具一定要学会使用。这些功能的发明就是为了帮助程序员debug的。使用ide的调试功能、gdb等工具来调试都是可以的,把基本的断点功能、watch检测变量功能、查看调用堆栈功能都了解学习下。手里掌握的方法越多,这些都是能够节省调试时间的好帮手。
从个人的学习经历来讲,ide的调试器比gdb等命令行工具容易上手些,个人建议先会使用ide来调试,从断点、单步调试、单行调试功能开始。
如果是刚学代码不久,连程序的运行或者觉得递归这种想起来很难很头疼的话,我在此建议个比较强大好用的工具,简直就是代码扫描仪。Python Tutor,这个工具是国外教授写的,用来给学生入门编程所使用,不要给名字骗了,不光Python,主流的编程语言比如J***a, C,C++都是能够支持的。使用这样的工具后,代码怎么跑的你都能看的一清二楚。
2、熟能生巧
这问题很大程度上是个开放性的问题,行业界基本还没有出现统一的答案。
最关键的是注意模块化。把程序分成小的功能模块,每个模块要能单独拿出来测试。模块间注意去掉循环依赖,这样所有模块会自然分层,遇到问题的时候可以一层一层往下调试。
用IDE和debugger其实有很大功能局限性,更好用的办法往往是打印log分析log。printf基本是万能的。
训练可以这样。写一个稍微有点规模的项目,大于2000行代码的那种,然后尝试把它分成小模块,每个模块一个文件,每个文件不超过300行(或者500行,有的语言可能本身更啰嗦一点),每行不超过80个字符。每个模块尽量只做一件小事情。注意让模块之间没有循环依赖。给每个模块写单元测试。然后,写出来这个project之后,把模块之间的依赖关系画个图(像这个:Go standard library D*** visualization),拿着这个图给你的一个(同样高数没有问题的)朋友看,让他参照着这个图去读你的源代码,看他能不能读懂你的代码要做什么,是怎么做的。如果他能读懂,说明你模块分得非常好。如果他读不懂,可以具体看他读哪个模块读不懂了,研究一下有没有更好的模块化方式或者写法。
如果你的所有代码都能模块化成这个水平,那么你的代码质量(尤其是在代码可读性和可维护性上)已经是世界一流的了。真心的。
到此,以上就是小编对于打印二叉树j***a语言的问题就介绍到这了,希望介绍关于打印二叉树j***a语言的3点解答对大家有用。