二叉樹演算法排序

2021-10-23 09:26:48 字數 1319 閱讀 3685

排序規則 — —— comparable 介面

所有的排序規則必須依靠 comparable 介面完成,此介面定義格式如下:

public inte***ce comparable

以上的方法是 compareto()方法,此方法是作為比較操作存在的,但是此方法的返回值是 int 型資料。此方法有三種返

回結果:

· 返回 0:表示相等

· 返回 1:表示大於

· 返回-1:表示小於

從 comparable 操作的 compareto()方法上可以發現,此方法返回的有三種值:-1、0、1,那麼實際上這種排序規則就

非常類似於資料結構中學習過的 bt(binary tree)演算法。

現在假設有如下的一組資料:「5、6、1、2、3、90、35、7」,要求現在使用 bt 演算法排序。

二叉樹演算法的排序規則:

1、 選擇第乙個元素作為根節點

2、 之後如果元素大於根節點放在右子樹,如果元素小於根節點,則放在左子樹

3、 最後按照中序遍歷的方式進行輸出,則可以得到排序的結果(左->根->右)

中序遍歷之後結果是:1 -> 2 ->3 ->5 -> 6 ->7 ->35 ->90

在執行之前先來觀察以下的一種操作**:

package org.compareabledemo03;

public class comdemo

}

只要實現了 comparable 介面的物件,都可以使用 comparable 介面進行內容的接收。

既然明白之後,那麼下面動手自己手工實現乙個二叉樹。

package tree;

public class binarytree else

} public void print()

class node

public void printnode()

system.out.print(this.data+"-->");

if (this.right!=null)

} public void addnode(comparable data) else

}else if (this.data.compareto(data)<=0) else }}

}}

package tree;

public class binarytreedemo

}

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...