二叉树是一种特殊的树形结构,它是一种度数为2的树
二叉树基本性质:
- 性质1:第i层上至多(2^{i-1})个结点
- 性质2:深度为k的结点至多(2^{k-1})个结点
- 性质3:叶结点数为k,那么双支结点数为k-1个
- 性质4:完全二叉树的深度为(floor(log_2n)+1)
· 例:(2^{log_2n})=n 如(log_28)=3 - 性质5:对于一棵n结点的二叉树,有如下性质:
· 如果是编号为1的结点,那么他没有父结点
· 如果是编号为(i(i eq 1))的结点,那么他的父结点为(frac{i}{2})
· 如果(2 imes i>n),那么此结点为叶子节点,否则左儿子为(i imes 2)
· 如果(2 imes i+1>n),那么此结点没有右儿子,否则右儿子为(i imes 2+1)
二叉树遍历:
- 先序遍历:(根左右)
- 先根结点
- 然后左子树
- 最后右子树
- 中序遍历:(左根右)
- 先左子树
- 然后根结点
- 最后右子树
- 后序遍历:(左右根)
- 先左子树
- 然后右子树
- 最后根结点
已知先序+中序可以求后序,后序+中序可以求先序
但是先序+后序并不可以确定唯一的中序
例题见往年初赛题
表达式树:
我们最经常使用的是中缀表达式,但还有前缀表达式和后缀表达式
例:
· (a+b)c-d-e/f (中缀表达)
那么前缀表达/波兰式为:
· --+abcd/ef
后缀表达/逆波兰式为:
· ab+c*d-ef/-