二叉樹尋找之python實現--(插入)

來源:互聯網
上載者:User

標籤:二叉樹   python   資料結構   遍曆   二分尋找   

借維基百科的話來說就是二叉樹就是一種每個節點最多有兩個子樹的樹結構。但是今天討論的是二叉尋找樹,這個尋找樹就是二叉樹的一種延伸吧,加了幾條限制就變成了二叉尋找樹。

下面我們來看看二叉尋找樹有什麼性質呢,如果左子樹不為空白,那麼一定全部小於等於根節點,同樣右子樹也是一樣的,而且左右子樹都是二叉尋找樹。最後樹中沒有鍵值相同的節點。如果滿足上述四條性質的二叉樹就是二叉尋找樹。下面我們來一張二叉尋找樹的圖片吧,現在不是都講究有圖有真相嗎。

我們還是得從頭開始,因為它二叉樹是一種資料結構,那麼就一定有定義,我們來看一下它是怎麼定義的呢,其實就是資料、左子樹、右子樹。它就是一個類,如果你想建立一個節點root = Node(8),像這樣你就建立了一個根節點。

class Node:    """    二叉樹左右枝    """    def __init__(self, data):        """        節點結構        """        self.left = None        self.right = None        self.data = data
現在節點的定義已經ok了,那我們來看一下插入函數吧,insert。其實插入函數裡就是二分的思想,因為二叉尋找樹的性質,我們可以使用二分的方法來尋找插入的位置。裡面還有遞迴的意思,大概意思就是不到葉子節點就一直往下找,找到合數的就將其data的值插入相應的節點中。

def insert(self, data):    """    插入節點資料    """    if data < self.data:        if self.left is None:            self.left = Node(data)        else:            self.left.insert(data)    elif data > self.data:        if self.right is None:            self.right = Node(data)        else:            self.right.insert(data)
我們可以繼續構造我們的小樹啊,繼續插入幾個節點來完善這個小小樹。

root.insert(3)root.insert(10)root.insert(1)
我們可以來類比一下插入的過程啊,插入3時和8比較小於8且8的左節點為空白,所以插入到8的左節點上。插入10的時候呢就直接插到8的右節點上了,插入1的時候先和8比較小於8,且8的左子樹不為空白,遞迴調用8的左子樹,之後和3比較,比3小且3的左子樹為空白,插入到3的左節點。

root.insert(6)root.insert(4)root.insert(7)root.insert(14)root.insert(13)


又到點了,小夥伴們該睡覺了,那麼明天再寫遍曆神馬的吧。



二叉樹尋找之python實現--(插入)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.