二叉搜尋法(在排序好的情況下)
#include <stdio.h>
#include <stdlib.h>
int BinarSearch(int a[],int x,int n)
{
int left=0;
int right =n-1;
while(left<=right)
{
int middle =(left+right)/2;
if(x==a[middle])return middle;
if(x>a[middle])left =middle+1;
else right =middle -1;
}
return -1;
}
int main()
{
printf(“Hello world!\n”);
int a[100]={1,2,5,8,12,15,16,18,20,22};
for(int i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
int j = BinarSearch(a,12,10);
printf("%d",a[j]);
return 0;
}
相關推薦
二叉搜尋法(在排序好的情況下)
#include <stdio.h> #include <stdlib.h> int BinarSearch(int a[],int x,int n) { int left=0; int right =n-1; while(left<=right) { in
2.判斷一個二叉樹是否是二叉搜尋樹(騰訊面試題)
1.面試的時候當面試官提出來的時候,我立馬想到的就是基於前序遍歷的遞迴方法。但是這個方法在面試官給說一個測試用例的時候就徹底傻眼了。public class Main { public static boolean isSerchBTree(TreeNode root)
“樹”據結構一:二叉搜尋樹(Binary Search Tree, BST)
前言 定義 來源 演算法 資料結構 查 遍歷 增 刪 總結 參閱 前言 想寫兩篇關於AVL樹和B樹的較為詳細的介紹,發現需要先介紹二叉搜尋樹作為先導。 定義 二叉搜尋樹(Binary Search Thee, BST),也被稱為二
【模板】二叉搜尋樹(二叉排序樹,二叉查詢樹,BST)
二叉搜尋樹其實就是滿足左結點小於根,右結點大於根這類規則的樹形結構。 1 int n; 2 int a[MAX_N]; 3 int lt[MAX_N], rt[MAX_N]; 4 // 沒有則為-1 5 // 預設a[0]為根結點 6 7 void Insert(int
二叉樹基礎操作 ,前中後序遍歷,求二叉樹高度,二叉搜尋樹(二叉排序樹)Java實現 程式碼集合
首先,定義一個樹類Tree.java public class Tree { public TreeNode root; } 定義樹節點類TreeNode.java public class TreeNode { public TreeNode(int
leetcode 將已排序的 陣列/連結串列 轉換為二叉搜尋樹(BST),Python實現
思路:不論是陣列還是連結串列,遞迴地找到他的root(即序列的中點),並返回。 1. 將陣列轉換為二叉樹: # Definition for a binary tree node. # class T
C++實現二叉搜尋樹(二叉排序樹)模板類
參考了Weiss的資料結構與演算法分析C++描述第三版 在中文版中,第99頁貌似有個錯誤。在4.3.6 平均情況分析中,書上寫的是“直觀地,我們期望前一節所有的操作特別是makeEmpty 和 operator=都花費O(logN)時間,……”,我感覺不太對,因為make
二叉搜尋樹(二叉排序樹)
內容和程式碼參考殷人昆版的《資料結構》 二叉搜尋樹也稱為二叉排序樹,二叉搜尋樹要麼是空樹,要麼具有如下性質: (1)每個結點都有一個作為搜尋依據的結點值,並且每個結點值互不相同; (2)左子樹(如果存在)上的所有結點值都小於根結點的值; (3)右子樹(如果存在)上的所有結點
04-樹4 是否同一棵二叉搜尋樹 (25 分)
04-樹4 是否同一棵二叉搜尋樹 (25 分) 給定一個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列{2, 1, 3}和{2, 3, 1}插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入
leetcode-將有序陣列轉換為二叉搜尋樹(JavaScript)
將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以
二叉搜尋樹(BST樹)
二叉搜尋樹 文章目錄 二叉搜尋樹 1,定義 2,C++實現二叉樹的基本操作 1,定義 二叉查詢樹(Binary Search Tree),又名二叉搜尋樹或二叉
6-21 是否二叉搜尋樹 (25 分)
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。 函式介面定義: bool IsBST ( BinTree T ); 其中BinTree結構定義如下: typedef struct TNode *Position; typedef Position BinTree; struct
7-2 是否完全二叉搜尋樹 (30 分)
將一系列給定數字順序插入一個初始為空的二叉搜尋樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。 輸入格式: 輸入第一行給出一個不超過20的正整數N;第二行給出N個互不相同的正整數,其間以空格分隔。 輸出格式: 將輸入的N個正
浙大版《資料結構》習題4.3 是否二叉搜尋樹 (25 分)
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。 函式介面定義: bool IsBST ( BinTree T ); 其中BinTree結構定義如下: typedef struct TNode *Position; typedef Position BinT
資料結構與演算法 -- 二叉搜尋樹(java實現)
package com.huang.test.datastructure; import java.util.*; /** * 二叉搜尋樹 */ abstract class BstData<T> { BstData<T> left;
資料結構之二叉搜尋樹(BST)
JavaScript實現二叉搜尋樹(BST) 二叉搜尋樹定義 二叉搜尋樹JavaScript程式碼實現 1. 二叉搜尋樹 二叉查詢樹(英語:Binary Search Tree),也稱為二叉搜尋樹、有序二叉樹(ordered binary tree)或排序二
LeetCode-96.不同的二叉搜尋樹(相關話題:動態規劃)
給定一個整數 n,求以 1 ... n 為節點組成的二叉搜尋樹有多少種? 示例: 輸入: 3 輸出: 5 解釋: 給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹: 1 3 3 2 1 \ /
二叉搜尋樹(建立及其遍歷等)
題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入描述: 開始一個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。 接下去一行是一個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
LeetCode-109.有序連結串列轉換二叉搜尋樹(相關話題:深度優先)
給定一個單鏈表,其中的元素按升序排序,將其轉換為高度平衡的二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定的有序連結串列: [-10, -3, 0, 5, 9], 一個可能的答案是:[0, -3,
二叉搜尋樹(C語言)
二叉搜尋樹又稱二叉排序樹,他或者是一顆空樹,或者是具有以下性質的二叉樹 1、若它的左子樹不為空,左子樹上所有節點的值都小於根節點上的值 2、若它的右子樹不為空,右子樹上所有節點的值都大於根節點上的值 它的左右子樹分別為二叉搜尋樹 用搜索關鍵字的方法先定義