Skip to content

Commit

Permalink
add
Browse files Browse the repository at this point in the history
  • Loading branch information
hunterhug committed Mar 28, 2020
1 parent 2f9ff3c commit dbab355
Show file tree
Hide file tree
Showing 12 changed files with 908 additions and 25 deletions.
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@ node_modules/
.vscode/
.idea/
.DS_Store
package-lock.json
/code
package-lock.json
4 changes: 2 additions & 2 deletions algorithm/search/avl_tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -442,8 +442,8 @@ func (node *AVLTreeNode) MidOrder() {

1. 第一种情况,删除的节点是叶子节点,没有儿子,直接删除后看离它最近的父亲节点是否失衡,做调整操作。
2. 第二种情况,删除的节点下有两个子树,选择高度更高的子树下的节点来替换被删除的节点,如果左子树更高,选择左子树中最大的节点,也就是左子树最右边的叶子节点,如果右子树更高,选择右子树中最小的节点,也就是右子树最左边的叶子节点。最后,删除这个叶子节点,也就是变成情况1。
3. 第三种情况,删除的节点只有左子树,因为树的特征,可以知道左子树其实就只有一个节点,它本身,否则高度差就等于2了,将左节点替换被删除的节点,最后删除这个左节点,变成情况1。
4. 第四种情况,删除的节点只有右子树,因为树的特征,可以知道右子树其实就只有一个节点,它本身,否则高度差就等于2了,将右节点替换被删除的节点,最后删除这个右节点,变成情况1。
3. 第三种情况,删除的节点只有左子树,可以知道左子树其实就只有一个节点,被删除节点本身(假设左子树多于2个节点,那么高度差就等于2了,不符合AVL树定义),将左节点替换被删除的节点,最后删除这个左节点,变成情况1。
4. 第四种情况,删除的节点只有右子树,可以知道右子树其实就只有一个节点,被删除节点本身(假设右子树多于2个节点,那么高度差就等于2了,不符合AVL树定义),将右节点替换被删除的节点,最后删除这个右节点,变成情况1。

后三种情况最后都变成一种情况,就是将删除的节点变成叶子节点,然后可以直接删除该叶子节点,然后看其最近的父亲节点是否失衡,失衡时对树进行平衡。

Expand Down
Loading

0 comments on commit dbab355

Please sign in to comment.