二叉樹 二叉樹的查詢

2021-10-06 19:03:04 字數 1872 閱讀 1492

三種查詢方式:

前序查詢、中序查詢、後序查詢。

前序查詢

比較當前節點,如果是,返回查詢結果。如果不是就向左遞迴查詢,如果左邊沒有就向右邊遞迴查詢。設定no=5,針對該題,前序遍歷共4次。

中序遍歷 先向左遞迴查詢,如果左子樹沒有,再比較當前節點,如果仍然不是則向右遍歷查詢。

後序遍歷 先向左遞迴查詢,如果左子樹沒有,就向右邊子樹遞迴查詢,如果還沒有,再比較當前節點。

package chapter18.binarytree

object binarytreedemo else

// println("沒有找到~")

// println("中序查詢")

// val resnode = binarytree.infixordersearch(5)

// if (resnode != null)

// printf("找到,id = %d name = %s", resnode.no, resnode.name)

// else

// println("沒有找到~")

println

("後序查詢"

) val resnode = binarytree.

postordersearch(5

)if(resnode != null)

printf

("找到,id = %d name = %s"

, resnode.no, resnode.name)

else

println

("沒有找到~")}

}//定義節點

class

heronode

(hno: int, hname: string)

//向左遞迴查詢

var resnode: heronode = null

if(this

.left != null)

if(resnode != null)if(

this

.right != null)

return resnode

}//中序遍歷查詢

def infixordersearch

(no: int)

: heronode =

if(resnode != null)

if(no ==

this

.no)if(

this

.right != null)

return resnode

}//後序遍歷查詢

def postordersearch

(no: int)

: heronode =

if(resnode != null)if(

this

.right != null)

if(resnode != null)

if(no ==

this

.no)

return resnode

}}//二叉樹

class

binarytree

else

}//中序查詢

def infixordersearch

(no: int)

: heronode =

else

}//中序查詢

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

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

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

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

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...