創建一個二叉搜索樹,并且從創建的二叉搜索樹中查找是否存在某個值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function Node(value){
this.value =https://www.cnblogs.com/lanshanxiao/p/ value;
this.left = null;
this.right = null;
}
//二叉搜索樹:是一棵二叉樹,左子樹的節點值都比當前節點值小,右子樹的節點值都比當前節點值大,
function buildSearchTree(arr){
if(arr == null || arr.length == 0) return null;
var root = new Node(arr[0]);//把陣列第一個數當做根節點
for(var i = 0; i < arr.length; i++){//回圈陣列,創建二叉搜索樹
addNode(root, arr[i]);
}
return root;
}
//添加節點
function addNode(root, value){
if(root == null) return null;//root為null,直接回傳
if(root.value =https://www.cnblogs.com/lanshanxiao/p/= value) return null;//值相等,說明已有該節點
if(root.value > value){//小于,則往左子樹上添加
if(root.left == null){//左節點沒值,添加節點
root.left = new Node(value);
}else{
addNode(root.left, value);
}
}else{//大于,往右子樹上添加
if(root.right == null){//右節點沒值,添加節點
root.right = new Node(value);
}else{
addNode(root.right, value);
}
}
}
//測驗,創建一個二叉搜索樹
var arr = [9,3,5,4,6,2,7,1,8];
var tree = buildSearchTree(arr);
console.log(tree);
//從二叉搜索樹中查找某個值
function searchTree(root, value){
if(root == null) return false;
if(root.value =https://www.cnblogs.com/lanshanxiao/p/= value) return true;
if(root.value > value){//小于,往左子樹上查找
return searchTree(root.left, value);
}else{//大于,往右子樹上查找
return searchTree(root.right, value);
}
}
//測驗,查找二叉搜索樹是否存在4
console.log(searchTree(tree, 4));
</script>
</body>
</html>
二叉搜索樹的創建和查找
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/36568.html
標籤:其他
