日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二叉树为空意味着二叉树_程序员的进阶课-架构师之路(8)-二叉树

發布時間:2025/3/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树为空意味着二叉树_程序员的进阶课-架构师之路(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)-二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。