[关闭]
@w1024020103 2017-05-24T23:41:54.000000Z 字数 1211 阅读 577

Lecture 25: Advanced Trees

CS61B


Traversals

1.JPG-62.5kB

有level order和 depth first traversal两大类,主要介绍三种depth first traversal: preorder, in order, post order.

注意一下,如何记忆这几种traversal,他们的命名中的in,pre,post指的是root被访问的顺序。比如pre,就是root最先被访问; In,就是root是in between被访问的,而post就是root最后被访问。

preorder

Root > Left > Right

2.JPG-57.4kB

Inorder

Left > Root > Right

3.JPG-83.2kB

Postorder

Left > Right > Root

4.JPG-103.9kB

Tricks and helpful resoucers:

TRICK for Preorder,Inorder,Postorder with Example (Imp)

Binary tree traversal: Preorder, Inorder, Postorder

这些traversal的应用:

Preorder Traversal 可以用来print directory listing:

6.JPG-67.2kB

Postorder traversal可以用来总计file sizes:

7.JPG-78.8kB

为了避免写Print,sumfilesizes这些具体的方法,我们可以采用visitor pattern来统一写tree traversal:

8.JPG-104.8kB

preorder traversal的runtime分析:

9.JPG-81.9kB

Every node visited exactly once. Constant work per visit.

10.JPG-76.7kB

Level Order Traversal

Level Order Traversal就是一层一层地Visit nodes on 0th level, then 1st level, then 2nd level, etc.

iterative deepening:

11.JPG-84.4kB

Level Order Traversal的time complexity:

Level Order Tree Traversal

Tree height和run time也没有直接关系,不要简单地相关联,而是要每种情况各自分析:

18.JPG-68.1kB

Range Finding

Geometric search: 比如我们想在tree里找到某个范围里的item:

12.JPG-56.4kB

实施起来很简单,traverse整个数,用一个hashset来装满足条件的item:

13.JPG-73.9kB

很intuitive地pruning来绕过那些根本不可能存在满足条件的分支:

14.JPG-84.9kB

Search的runtime:不知道为啥

15.JPG-87.9kB

Spatial Trees

如果我们想在平面上进行range finding, 我们需要另外一种tree:

17.JPG-64.6kB

Quadtree:

16.JPG-80.7kB

Study Guide:

Level C:

1.image_1bf3flvfrpddfi813n9bq01t6gl.png-33kB

LEVEL B:

20.jpg-163.7kB

参考:(可能height得定义不同,他们这里是1+ height(T.left) + height(T.right))
Diameter Of a Binary Tree

A LEVEL:

1.21.jpg-70.1kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注