层次关系
查找:
1静态查找
A二分查找
元素满足
a有序
b连续存放在数组中
时间复杂度O(logN)
二分查找判定树:
1判定树上每个结点需要的查找次数刚好为该结点所在的层数。
2查找次数不会超过树的深度
3n个结点判定树的深度为log(2)n+1。
树:
n个结点,n=0空树。
根Root相对的
子树SubTree相对的
子树为互不相交的有限集……
除了根结点外,每个结点有且仅有一个父节点
一颗N个结点的树有N-1条边
树的定义是以递归的方式定义的。
树的基本术语
a结点的度(Degree):结点的子树个数
b树的度:树的所有结点中最大的度数
c叶结点(Leaf):度为0的结点
d父结点(Parent):有子树的结点是其子树根结点的父结点
e子节点(Child):若A结点是B结点的父结点,则B结点是A结点的子结点。
f兄弟结点(Sibling):具有同父结点的子节点互为兄弟结点。
g路径和路径长度
h祖先结点
i子孙结点
j结点的层次
k树的高度
树的表示
a儿子-兄弟表示法
即二叉树,度为2的树。
二叉树:
性质:
A二叉树第i层的最大结点数为:2^(i-1),i>=1。
B深度为k的二叉树有最大结点总数为:2^(k)-1,k>=1。
C n0=n2+1
存储结构:
1顺序存储结构
用完全二叉树或者填充从完全二叉树
2链表存储
。
二叉树的遍历:
1先序遍历:
A访问根结点
B先序历遍其左子树
C先序历遍其右子树
三种历遍过程路线是一样的,只是访问结点的时机不同。
二叉树的非递归遍历:
特别的是“堆栈实现后序遍历的非递归程序”
查到三种方法:穷极构建两次访问;重视压栈次序;反向思维。
二叉树的核心问题:二维结构的线性化
使用队列进行“层序”遍历
二元运算表达式树及其遍历
先序、中序、后序遍历分别得到前缀、中缀、后缀表达式。