12人加入学习
(0人评价)
算法面试必备数据结构和算法
价格 $9,999美元
该课程属于 2023.7.9 CS课程 请加入后再学习
  • stack&queue
  • binary tree&binary search tree

stack FILO,先进后出,可以用array implement

queue FIFO,先进先出,可以用linked list implement

Stack:应用:树上的递归DFS改写为iteration

Queue:应用:1.BFS   2. Moving average

 

Moving average. LC 346. Moving Average from Data Stream.   可以用moving window的题目

 

  • 二叉树

单纯的二叉树,一父节点最多两个子节点,没有大小要求。link list也算是一个二叉树。

 

Balanced binary tree:对任一节点来说左右子树的高度差不超过一。

 

二叉搜索树:左边所有节点<=中间<右边所有节点,平均O(logn),看看是不是balanced。

heap不能进行搜索的操作,只能保证插入删除元素时 logn。

 

 

  • 二叉树

二叉树的遍历:可以用recursive

先序,中序,后序遍历。

叶节点的时候return;

preorder先序遍历:中左右

add;  traverse left; traverse right

inorder中序遍历:左中右。

traverse left;    add;    traverse right;

postOrder后序遍历:左右中 

traverse left; traverse right; add;

可以 go through一些树的list

 

  • 遍历法(traversal)vs分治法

遍历法:依次遍历所有节点,遍历中做记录,对节点进行操作。每个结点的最大深度是上一次最大深度和当前深度的最大值,递归时当前深度+1。 可以用全局变量。 而且可能需要另加一个helper function来记录遍历中的cur_深度

 

分治法:先让左右子树去解决同样的问题,然后得到结果后在整合为整棵树的结果.一个结点的最大深度=左右儿子最大深度+1

 

例题:LC104. Maximum depth of binary tree.

 

 

例题:lc110: balanced binary tree。 细节,子树汇报的时候可以不只汇报height,还可以汇报boolean的balanced,或者用height-1来表示unbalance。因为,最下面子树不balance但是root仍有可能会判断为balance。

recursive经常写helper function,因为i可能return的value或者input可能不一样。

 

用stack表示inorder tranversal。without recursion。有个网站写了逻辑。

 

 

例题:LC173Binary search Tree iterator. 1h41min处

Lc98 validate BST。 1h42min。  可以用stack 来iterate tree,因为iprin出来的值一定是从小到大(BST)。

也可以用recursion来判断

BST上面的inorder tanversal一定是从小到大

 

 

LC938 range sum of BST. 可以用DFS和全局变量,recursive implement ation 。 2h00min

 

LC114. faltten binary tree to lined list. 2h4min. 遍历法可以,分治法,从下往上

 

作业:binary tree paths。

 

 

[展开全文]
shaning · 2023-11-06 · Session 6 0

授课教师

Yuhan老师

课程特色

视频(9)

学员动态

Shuhao 加入学习
Bianyw 加入学习
shjm 加入学习
YanHuang 加入学习
duoduo99 加入学习