華為中級機試題 二分查詢樹的應用

2021-08-08 13:13:03 字數 695 閱讀 4388

problem description

判斷兩序列是否為同一二叉搜尋樹序列

input

開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。

接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。

接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。

output

如果序列相同則輸出yes,否則輸出no

sample input

2

567432

543267

5763420

sample output

yes

no

本題思路:

本道題是典型的二分查詢樹問題,涉及到以下幾個函式:1.結構體內部建構函式(造點函式)2.插點函式(將乙個點插入到二叉樹內,返回這個樹的根指標)3.造樹函式(迴圈呼叫插點函式,每次返回的根指標作為下乙個插點函式的實參)4.先根遍歷函式(輸出字串)用於比較。本**中,反覆使用類的函式,具體string的使用請參考string使用大全,字串'=='、『+』和『』的過載,以及size()方法的使用,總的來說受益頗深!

二分查詢的應用

二分查詢是一種很有效率的查詢方式,每次查詢後餘下的區間是指數級遞減的。二分查詢的限制也很明顯,就是資料必須是拍過序的。首先我們來看通過二分查詢的方式來計算乙個數的平方根 def mysqrt n int,left int,right int,bit num float mid left right ...

二分查詢的應用

最大的最小值,最小的最大值用二分 這個發現緣起於兩段看似相同的 這兩段 看似相同,實則大有學問 我編了乙個簡單的題目 在1,2,3,三個數中找到大於等於2的最小值 這是乙個求最小的最大值的問題,按道理來我們要用左開右閉的區間 及靠上方的 去逼近答案 若用靠下方的 左閉右開的區間 則步驟如下 1 l ...

二分查詢的變形應用

演算法理解 獲取陣列中第乙個空閒的塊 比如array 為1111111 111000000 0 問題就變成 尋找array 中第乙個出現的0 演算法一 遍歷陣列找到第乙個 0 o n 演算法二 二分查詢 二分查詢成功條件 array i t 失敗條件 l u 對於本問題來說,成功條件則是 array...