0%

AVL树

平衡二叉排序树

AVL树的性质

  • 每个节点都大于左子树并小于右子树
  • 每个节点的左子树高度和右子树高度差不超过1

树节点的高度

节点的平衡因子

旋转操作

左旋转

右旋转

LL LR RL RR操作

阅读全文 »

线索二叉树(Threaded BinaryTree)

中序线索化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*中序遍历的构建*/
void inCreate(TreeNode *root, TreeNode *&prev)
{
if(root)
{
inCreate(root->left, prev);
if(root->left == NULL)
{
root->left_flag = CLUE;
root->left = prev;
}
if(prev && prev->right == NULL)
{
prev->right_flag = CLUE;
prev->right = root;
}
prev = root;
inCreate(root->right, prev);
}
}

/*中序线索下的遍历*/
void inOrder(TreeNode *root)
{
while(root)
{
while(root->left_flag != CLUE)
root = root->left;
cout << root->value << " ";
while(root->right_flag != LINK)
{
root = root->right;
cout << root->value << " ";
}
root = root->right;
}
cout << endl;
}
阅读全文 »