综述
- 一棵搜索树既可以作为一个字典又可以作为一个优先队列
- 对于有n个节点的一棵完全二叉树来说,这些操作的最坏运行时间为O(lg n)
- B树,特别适合于二级存储器上的数据库维护。
二叉树的定义
- 性质
二叉树:
设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,那么y.key<=x.key。如果y是x右子树中的一个结点,那么y.key>=x.key。
平衡二叉树:
- 左子树和右子树的高度之差的绝对值小于等于1
- 左子树和右子树也是平衡二叉树
完全二叉树:
对树中的结点按从上至下、从左至右的顺序进行编号,如果编号为i(1<=i<=n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
- 遍历方法
递归方法
TraverseBiTree(Node*root)
{
TraverseBiTree(root->left);
Print root;
TraverseBiTree(root->right);
}
非递归方法
TraverseBiTree(Node * root)
{
Stack<Node*> stack;
while (root | stack.empty())
{
If (root != nullptr)
{
Stack.push(root);
Root = root->left;
}
Else
{
Stack.top();
Stack.pop();
Print root;
Root = root->right;
}
}
}