二維陣列中的查詢(二叉搜尋樹)

2021-10-03 12:18:43 字數 1124 閱讀 1018

題目:

在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

示例:

現有矩陣 matrix 如下:

[[1,   4,  7, 11, 15],

[2,   5,  8, 12, 19],

[3,   6,  9, 16, 22],

[10, 13, 14, 17, 24],

[18, 21, 23, 26, 30]

]給定 target =5,返回true

給定 target =20,返回false

限制:0 <= n <= 1000

0 <= m <= 1000

常規迴圈遍歷查詢,遍歷二維陣列,判斷每個子陣列中是否存在該值。

class solution  else  else }}

return $res;

}}

提交通過。

執行用時:64 ms

記憶體消耗:21.2 mb

根據題目描述的二維陣列具備二分搜尋樹(binary search tree)的特性,以右上角的元素為根節點:

所以在搜尋(查詢)給定元素的時候,可以根據以上特性設定判斷條件篩選:

先比較一行的最後乙個元素與給定元素$target,如果$target大,則去找下一行的最後乙個元素;如果$target小,則去找同一行的前乙個元素。

class solution  else  elseif ($target < $matrix[$row][$col])  else 

}return false;}}

}

提交通過。

執行用時:64 ms

記憶體消耗:21.1 mb

Codeup二叉查詢樹 二叉搜尋樹

判斷兩序列是否為同一二叉搜尋樹序列 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組...

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

特點 結構體定義struct node 建樹 建二叉排序樹 void create node root,int t else if t root data create root lc,t else create root rc,t 前序遍歷 層序 字典序 int flag int pre 1001...

二叉搜尋樹(二叉排列樹或二叉查詢樹)

1 二叉排序樹性質 1 就是若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若它的右子樹不空,則右子樹上所有節點的值均大於其根節點的值。3 換句話說就是 任何節點的鍵值一定大於其左子樹中的每乙個節點的鍵值,並小於其右子樹中的每乙個節點的鍵值。2 二叉排序樹查詢 要在二叉樹中找出查詢...