對每一結點,它小於或等於其左孩子和右孩子html
1.將元素添加爲新的葉節點,同時保持樹是徹底樹。
2.將該元素向根的方向移動,將它與父結點對換,直到其中的元素關係知足要求爲止。
如圖所示:
git
與次優二叉樹相對,二叉排序樹是一種動態樹表。其特色是:樹的結構一般不是一次生成的,而是在查找過程當中,當樹中不存在關鍵字等於給定值的結點時再進行插入。新插入的結點必定是一個新添加的葉子結點,而且是查找不成功時查找路徑上訪問的最後一個結點的左孩子或右孩子結點。算法
1.首先執行查找算法,找出被插結點的父親結點。
判斷被插結點是其父親結點的左、右兒子。將被插結點做爲葉子結點插入。
若二叉樹爲空。則首先單獨生成根結點。首先執行查找算法,找出被插結點的父親結點。
判斷被插結點是其父親結點的左、右兒子。將被插結點做爲葉子結點插入。
若二叉樹爲空。則首先單獨生成根結點。數據結構
2.執行刪除結點算法
在二叉排序樹刪去一個結點,分三種狀況討論:
1.若結點爲葉子結點,即左子樹和右子樹均爲空樹。因爲刪去葉子結點不破壞整棵樹的結構,則能夠直接刪除此子結點。
2.若結點只有左子樹或右子樹,此時只要令或直接成爲其雙親結點的左子樹或右子樹便可,做此修改也不破壞二叉排序樹的特性。
3.若結點的左子樹和右子樹均不空。在刪去結點以後,爲保持其它元素之間的相對位置不變,可按中序遍歷保持有序進行調整,能夠:
令結點的直接前驅(或直接後繼)替代該結點,而後再從二叉排序樹中刪去它的直接前驅(或直接後繼)即讓結點的左子樹(若是有的話)成爲結點左子樹的最左下結點(若是有的話),再讓左子樹成爲結點的左右結點的父結點。學習
無.net
正確使用Markdown語法(加1分)設計
模板中的要素齊全(加1分)調試
教材學習中的問題和解決過程, (加3分)htm
感想,體會真切的(加1分)blog
點評認真,能指出博客和代碼中的問題的(加1分)
這一週花了點心思在這一章上面,也好好閱讀了不少內容,掌握的還算能夠。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 1/1 | 10/10 | |
第二週 | 700/700 | 1/2 | 10/20 | |
第三週 | 700/1400 | 1/3 | 10/30 | |
第四周 | 500/1900 | 2/5 | 10/40 | |
第五週 | 569/2469 | 1/6 | 10/50 | |
第六週 | 1070/3539 | 1/7 | 10/60 | |
第七週 | 986/4625 | 1/8 | 10/70 | |
第八週 | 1023/5648 | 2/9 | 10/80 |
計劃學習時間:10小時
實際學習時間:10小時