0%

By Long Luo

之前的如何根据数组或者字符串创建链表?详述了Leetcode链表相关算法题的测试方法。在Leetcode中关于的算法题中,很多树的题目,测试用例都是一个数组,比如102. 二叉树的层序遍历中所示:

1
2
3
4
5
6
给定二叉树: [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7

那么问题来了,如何根据数组构造一颗树呢?
为了加快刷题,我们需要一个工具来实现构造树和打印树结构这2个问题。

树是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由 n(n>0)个有限节点组成一个具有层次关系的集合。

Tree

如上图所示,把它叫做「树」是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

树具有以下的特点:

  • 每个节点都只有有限个子节点或无子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;
  • 树里面没有环路。

当我们完成一棵树的构建之后,虽然我们已经有树的前序、中序和后序遍历这种可以遍历树,但是如果我们如上图一样展示这棵树的结构,如何才能直观地打印出来呢?

阅读全文 »

By Long Luo

这几天花了2天时间来认真阅读完了王孟源写的文章,确实有点刷新世界观的感觉。

如何更好的认知这个世界?

By Long Luo

Leetcode链表相关的题时,给出的测试用例总是数组或者字符串形式,比如61. 旋转链表这道题,Testcase如下所示:

示例 1:

img

输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]

问题

如果在本地测试代码时,每次测试代码的时候,都需要自己创建测试用例,或者调用leetcode给的例子,都需要手动去创建一个链表的话,但这样效率太低!针对这种情况,写了几个工具函数用来处理链表的代码,可供大家参考。

阅读全文 »