二叉树
二叉树是一种特殊的树形结构,它是一种度数为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\neq 1)\)的结点,那么他的父结点为\(\frac{i}{2}\)
· 如果\(2\times i>n\),那么此结点为叶子节点,否则左儿子为\(i\times 2\)
· 如果\(2\times i+1>n\),那么此结点没有右儿子,否则右儿子为\(i\times 2+1\)
二叉树遍历:
- 先序遍历:(根左右)
- 先根结点
- 然后左子树
- 最后右子树
- 中序遍历:(左根右)
- 先左子树
- 然后根结点
- 最后右子树
- 后序遍历:(左右根)
- 先左子树
- 然后右子树
- 最后根结点
已知先序+中序可以求后序,后序+中序可以求先序
但是先序+后序并不可以确定唯一的中序
例题见往年初赛题
表达式树:
我们最经常使用的是中缀表达式,但还有前缀表达式和后缀表达式
例:
· (a+b)c-d-e/f (中缀表达)
那么前缀表达/波兰式为:
· --+abcd/ef
后缀表达/逆波兰式为:
· ab+c*d-ef/-