三種查詢方式:
前序查詢、中序查詢、後序查詢。
前序查詢
比較當前節點,如果是,返回查詢結果。如果不是就向左遞迴查詢,如果左邊沒有就向右邊遞迴查詢。設定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的所在子樹...