Update from Sync Service
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
## 1. 基本概念
|
||||
|
||||
1. 完全二叉树:若二叉树的高度是 h,除第 h 层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第 h 层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密。
|
||||
|
||||
2. 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。
|
||||
|
||||
3. 哈夫曼树:给定 n 个权值作为 n 的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树 (Huffman tree)。
|
||||
|
||||
4. 二叉排序树:又称二叉查找树(Binary Search Tree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
|
||||
|
||||
1. 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
|
||||
2. 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
|
||||
3. 左、右子树也分别为二叉排序树;
|
||||
4. 没有键值相等的节点
|
||||
5. 二分查找的时间复杂度是 O(log(n)),最坏情况下的时间复杂度是 O(n)(相当于顺序查找)
|
||||
|
||||
6. 平衡二叉树:又称 AVL 树。平衡二叉树是二叉搜索树的进化版,所谓平衡二叉树指的是,左右两个子树的高度差的绝对值不超过 1。
|
||||
|
||||
7. 红黑树:红黑树是每个节点都带颜色的树,节点颜色或是红色或是黑色,红黑树是一种查找树。红黑树有一个重要的性质,从根节点到叶子节点的最长的路径不多于最短的路径的长度的两倍。对于红黑树,插入,删除,查找的复杂度都是 O(log N)。
|
||||
|
||||
## 2. 面试题总结
|
||||
|
||||
1. 遍历问题
|
||||
1. 前序遍历
|
||||
```python
|
||||
def preOrderTraverse(node):
|
||||
if not node:
|
||||
return None
|
||||
print(node.val)
|
||||
preOrderTraverse(node.left)
|
||||
preOrderTraverse(node.right)
|
||||
```
|
||||
2. 中序遍历
|
||||
```python
|
||||
def inOrderTraverse(node):
|
||||
if node is None:
|
||||
return None
|
||||
inOrderTraverse(node.left)
|
||||
print(node.val)
|
||||
inOrderTraverse(node.right)
|
||||
```
|
||||
3. 后序遍历
|
||||
```python
|
||||
|
||||
def postOrderTraverse(node):
|
||||
if node is None:
|
||||
return None
|
||||
postOrderTraverse(node.left)
|
||||
postOrderTraverse(node.right)
|
||||
print(node.val)
|
||||
```
|
||||
4. 层次遍历
|
||||
[二叉树层次遍历](https://www.bilibili.com/video/BV1GY4y1u7b2/)
|
||||
```python
|
||||
class Solution:
|
||||
def levelOrder(self, root: TreeNode) -> List[List[int]]:
|
||||
if not root: return []
|
||||
res = []
|
||||
queue = [root]
|
||||
while queue:
|
||||
num = len(queue)
|
||||
tmp = []
|
||||
for _ in range(num):
|
||||
node = queue.pop(0)
|
||||
tmp.append(node.val)
|
||||
if node.left:
|
||||
queue.append(node.left)
|
||||
if node.right:
|
||||
queue.append(node.right)
|
||||
res.append(tmp)
|
||||
return res
|
||||
```
|
||||
|
||||
2.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user