20191201
出现502的原因是:
连接超时 我们向服务器器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。
解决办法:刷新
由结点和结点之间的连接关系构成,最重要的特征包括:
1)如果一个结构不空,其中就存在着唯一的起始结点,称为树根。
2)按结构的连接关系,树根外的其余节点都且只有一个前去,但可以有多个后继。
3)结构里的所有结点都在数根节点通过后继关系可达的结点集合里。换句话说,从树根结点触发,经过若干次后继关系可以到达结构中的任一个结点。
4)节点之间不会形成循环关系,即说明,节点之间的联系形成了一种序,但一般而言不像线性表那样形成一个全序。
5)从这种结构里的任意两个不同结点出发,通过后继关系可达的两个结点结合,或者互不相交,或者一个集合是另一个集合的子集。
二叉树是最简单的树形结构,其特点是树中每个结点至多关联到两个后继结点。
定义:
二叉树是结点的有穷集合。这个接或者是空集,或者其中有一个称为根节点的特殊结点,其余姐弟啊分属两个不相交的二叉树,这两个二叉树分别是原二叉树的左右子树。
基本概念
一个结点的子结点个数称为该结点的度。
一棵二叉树的根节点称为概述的子树 根节点的 父结点,与之对应,子树的根节点称为二叉树数根节点 的子结点
可认为从父结点到子结点有一条连线,称为父结点到子结点的边。
注意,这种边有方向,形成一种单方向的父结点/子结点关系(父子关系)。
基于父子关系可以定义其传递关系,称为祖先/子孙关系,它决定了一个结点的祖先节点或者子孙节点,
一棵二叉树的根节点是这棵树中所有其它节点的祖先节点,而这些结点都是其子孙节点。
根据祖先节点和子孙结点的定义,从一个祖先节点到其任何子孙节点都存在一系列边,形成从前者到后者的联系。这样一系列首尾相连的边称为属中的一条路径。
路径中 边的条数 称为该路径的长度。
显然:一颗二叉树的根结点到该树种的任一结点都有路径,而且路径唯一。
二叉树是一种层次结构,将其树根看作最高层元素,如果有子结点,其子结点看作下一层元素。
规定二叉树 根的层数为0 。对应位于K层的结点,其子结点是k+1层的元素。
从树根到树种任意结点的路径长度就是该节点所在的层数,也成为该节点的层数。
一棵二叉树的高度(也称为深度)是书中结点的最大层数(也是这棵树里的最长路径的长度)
二叉树的性质:
在非空二叉树第i层之多有2的i次方个结点;
高度为h的二叉树至多有2的(h+1)次方—1个结点
满二叉树:二叉树的所有分支节点的度数都为2;
扩充二叉树:对二叉树T,加入足够多的新叶结点,使T的原有节点都变成度数为2的分支节点,得到的二叉树称为T的扩充二叉树。扩充二叉树种新增的结点称为其外部节点,原树T的结点称为其内部节点。空树的扩充二叉树规定为空树。
完全二叉树:对一颗高度为H的二叉树,从0到第h-1层的结点都满,如果下一层的结点不满,则所有结点最左边连续排列,空位都在右边,这样的二叉树是一颗完全二叉树。
遍历:
深度优先遍历:中序遍历,前序遍历,后序遍历
宽度优先遍历:
二叉树的list实现
# list 实现二叉树
def BinTree(data,left=None,right=None):
return [data,left,right]
def is_empty_BinTree(btree):
return btree is None
def root(btree):
return btree[0]
def left(btree):
return btree[1]
def right(btree):
return btree[2]
def set_root(btree,data):
btree[0] = data
def set_left(btree,data):
btree[1] = data
def set_right(btree,data):
btree[2] = data
t1 = BinTree(2,BinTree(4),BinTree(8))
print(t1)
运行结果:
[2, [4, None, None], [8, None, None]]