深度优先遍历算法是经典的图论算法。从某个节点v出发开始进行搜索。不断搜索直到该节点所有的边都被遍历完,当节点v所有的边都被遍历完以后,深度优先遍历算法则需要回溯到v以前驱节点来继续搜索这个节点。
注意:深度优先遍历问题一定要按照规则尝试所有的可能才行。
二叉树是一种特殊的数据结构,常见的数据结构包含数组,链表,图、队列、散列表和树。二叉树属于树结构,二叉树中的每一个节点都有两个分支称为左子树和于右子树。二叉树每一层最多有 ( 2 n − 1 ) (2^n - 1) (2n−1)个节点。和普通树不同,普通树的节点没有分支限制,并且普通树的节点没有左右、子树之分。
二叉树类型:空二叉树、满二叉树、完全二叉树、完美二叉树、平衡二叉树。
术语 | 解释 |
---|---|
度 | 节点的度为节点的子树个数 |
叶子节点 | 度为零的节点 |
分支节点 | 度不为零的节点 |
孩子节点 | 节点下的两个子节点 |
双亲节点 | 节点上一层的源节点 |
兄弟节点 | 拥有同一双亲节点的节点 |
根 | 二叉树的源头节点 |
深度 | 二叉树中节点的层的数量 |
因为每个·节点都有两个子节点相连接,所以我们只需要拥有根节点就能找到二叉树上的任意节点,每个节点定义都相同
class Node : #二叉树节点定义
def _init_(self,x):
self.val = x #节点值
self.left = None #左侧子节点
self.right = None #右侧子节点
二叉树三种遍历形式: