二叉树

题目:

1.binary tree preorder traversal

2.maximum depth of binary tree

3.balanced binary  tree

4.binary  tree  maximum path sum,这个题也可以简化,从根节点出发的最大路径和

 

5.lowest common ancestor

6.binary tree level order traversal

7.binary tree level order traversal II

8.binary tree zigzag level order traversal

9.validate binary search tree

10.insert a node in binary search tree

11.search range in a binary search tree

12.implement iterator of binary search tree

13.remove node in binary search tree

 

非递归、递归。递归里面分遍历、分治。遍历与分治的区别:遍历返回值是void,分治返回值是value,需要利用。

分治先分后合。

大部分二叉树的题都可以使用分治解决。

二叉树的dfs、bfs和图的dfs、bfs

平衡二叉树、二叉搜索树(二叉查找树)、完全二叉树

balanced binary tree 时间复杂度:O(n),每次的操作是 O(1),n*O(1)

大概几种题型:

1.dfs

2.bfs

3.二叉搜索树

4.判断完全二叉树

5.前序、中序、后序非递归的方法

快排、归并排序:都是nlogn的复杂度,但归并排序需要额外空间。
归并排序先局部有序,再整体有序;快排是先整体有序,再局部有序。两种都是分治思想。快排不稳定,归并稳定。
归并算法一共可以分logn层,每层的时间复杂度为n,所以是nlogn。
快排最坏是n²,平均复杂度nlogn,最好nlogn

原文地址:https://www.cnblogs.com/ymjyqsx/p/10662450.html