判斷乙個數字序列是BST後序遍歷的結果

2021-06-10 09:47:29 字數 1144 閱讀 7732

相傳此乃網易二面題

要求現場手寫**判斷乙個數字序列是bst後序遍歷的結果。

如圖所示 對於後續遍歷的排序二叉樹應具有上面的乙個不等式性質 以及 根節點為最後乙個節點的性質

因此**如下

//序列array有n個元素

//如果這n個元素是二叉排序樹的後續遍歷結果 返回true

//否則 返回false

bool isbst(int * array, size_t n)

size_t i = 0;

for (i = 0; i < n-1; ++i) }

if (i == n-1)

size_t l_end = i;

for (i; i < n-1; ++i) }

if (i == n-1)

return false;

}

測試

如下的二叉排序樹

}由於先看的**1 並且完成了演算法。整理參考文獻時才發現,原**2中的作者已經完成了演算法,**看起來比我的要規整多了,大家可以欣賞一下傳送門。

判斷乙個資料序列是否是BST後序遍歷的結果

基本知識 1 bst 二叉排序樹,即父節點大於左子節點,小於等於右子節點 2 後序遍歷 先遍歷左子樹,再遍歷右子樹,最後遍歷根節點 基本思想 後續遍歷得到的陣列的最後乙個元素為根節點,前一部分為左子樹,後一部分為右子樹 前一部分中的元素都小於root 根 後一部分中的元素都大於root 根 所以可以...

三種演算法求乙個數字序列的最長遞增子串行

也有很多部落格寫如何實現最長遞增子串行的演算法,自己查閱了一些資料總結出三種實現的演算法,兩種是常見的處理思路,還有一種是本人自己想出來的演算法,很好理解,但是效率不是特別高。演算法一 將n個數的原序列a n 排序後得到遞增序列b n 則把求a的最長單調遞增子串行問題轉化成求a b序列的最長公共子串...

判斷乙個數字是否是回文

最近碰到乙個題目,其中一步判斷數字是否為回文 由於題目要求是最短時間實現,不要考慮實現本身的效率 1如果直接去實現,就是比較數字的最高位值和最低位,然後再。public boolean isp int x if x temp bit bit為數值位數 int temp1,temp2 for int ...