二叉树为空意味着二叉树_程序员的进阶课-架构师之路(8)-二叉树
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/m0_37609579/article/details/99687256
一、計算機科學中的樹
二、二叉樹的定義
一棵樹,它的每個節點最多只能有兩個子節點,此時就叫二叉樹。(我們一般在書中試題中見到的樹是二叉樹,但并不意味著所有的樹都是二叉樹。如果節點多于兩個,我們也稱之為多路樹)
可以看出: 滿二叉樹一定是完全二叉樹;完全二叉樹不一定是滿二叉樹。
如果我們給二叉樹加一個額外的條件,就可以得到一種被稱作二叉查找樹(binary search tree)的特殊二叉樹。
二叉查找樹要求:若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大于它的根結點的值; 它的左、右子樹也分別為二叉排序樹。【左邊下邊小,右邊上邊大】
三、二叉查找樹的日常操作
PS:二叉樹很多,但對我們來說,在實際的應用中,二叉排序樹的應用比較多。1.插入新節點
假設我們要為數組 a[] = {10 , 5 , 15 , 6 , 4 , 16 }構建一個二叉排序樹,我們按順序逐個插入元素。
插入過程是這樣的:
如果是空樹,則創建一個新節點,新節點作為根,因此以元素10構建的節點為該二叉查找樹的根。
- 插入5,5比10小,與10的左孩子節點進行比較,10的左孩子節點為空,進行插入。
- 插入15,15比10大,與10的右孩子節點進行比較,10的右孩子節點為空,進行插入。
- 插入6,6比10小,與10的左孩子節點5比較;6比5大,與5的右孩子節點進行比較,5的右孩子為空,進行插入。
- 插入4,4比10小,與10的左孩子節點5比較;4比5小,與5的左孩子節點進行比較,5的左孩子為空,進行插入。
- 插入16,16比10大,與10的右孩子節點15比較;16比15大,與15的右孩子節點進行比較,15的右孩子為空,進行插入。
從這個過程我們可以總結出插入新元素的步驟:
- 尋找元素合適的插入位置:新元素與當前結點進行比較,若值大于當前結點,則從右子樹進行尋找;否則從左子樹進行尋找.
- 找到插入位置之后,以元素的值構建新節點,插入二叉排序樹中。
2.遍歷平衡二叉樹
【百度百科】平衡二叉搜索樹,又被稱為AVL樹,且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。
遍歷平衡二叉樹,就是以某種方式逐個“訪問”二叉樹的每一個節點。舉例說明:
前序遍歷
- 訪問根結點中的數據
- 前序遍歷左子樹
- 前序遍歷右子樹
前序遍歷結果:
1, 2, 4, 8, 9, 5, 10, 3, 6, 7
中序遍歷
- 中序遍歷左子樹
- 訪問根結點中的數據
- 中序遍歷右子樹
中序遍歷結果:
8, 4, 9, 2, 10, 5, 1, 6, 3, 7
后序遍歷
- 后序遍歷左子樹
- 后序遍歷右子樹
- 訪問根結點中的數據
后序遍歷結果:
8, 9, 4, 10, 5, 2, 6, 7, 3, 1
層次遍歷
- 訪問根結點中的數據
- 訪問第二層所有結點的數據
- 訪問第三層所有結點的數據
- ……
層次遍歷結果:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
3.刪除節點
刪除二叉排序樹的某個節點有三種情況:
- 被刪除節點同時有左子樹與右子樹。將前驅節點的值保存在當前結點,繼而刪除前驅節點。
- 被刪除節點只有左子樹或只有右子樹。直接用子樹替換被刪節點。
- 被刪除節點沒有子樹。可以直接刪除節點。
4.查找最值元素
二叉排序樹的最小值位于其最左節點上;最大值位于其最右節點上
我的微信公眾號:架構真經(id:gentoo666),分享Java干貨,高并發編程,熱門技術教程,微服務及分布式技術,架構設計,區塊鏈技術,人工智能,大數據,Java面試題,以及前沿熱門資訊等。每日更新哦!
四、參考資料https://blog.csdn.net/wannuoge4766/article/details/83998377https://www.cnblogs.com/shixiangwan/p/7530015.htmlhttps://www.cnblogs.com/ysocean/p/8032642.htmlhttps://blog.csdn.net/u014634338/article/details/42465089http://www.it610.com/article/3607922.htm
總結
以上是生活随笔為你收集整理的二叉树为空意味着二叉树_程序员的进阶课-架构师之路(8)-二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分子排列不同会导致_生物信息遇上Deep
- 下一篇: 刷脸支付弊端举例_刷脸支付的优势和弊端,