Python中檢查BST的每個內部節點是否只有一個子節點
假設我們有二叉搜尋樹 (BST) 的先序遍歷。我們必須檢查每個內部節點是否只有一個子節點。
因此,如果輸入類似於preorder = [22, 12, 13, 15, 14],則輸出將為True,因為BST類似於:

為了解決這個問題,我們可以遵循一種有效的方法。由於一個節點的所有後代都小於或大於它,那麼我們可以遵循以下步驟:
獲取節點的下一個先序後繼
獲取節點的最後一個先序後繼
現在,當兩個後繼都小於或大於當前節點時,再次檢查,否則返回false。
為了解決這個問題,我們將遵循以下步驟:
- next := 0, last := 0
- 對於範圍從0到preorder大小減1的i,執行:
- next := preorder[i] - preorder[i+1]
- last := preorder[i] - preorder的最後一個值
- 如果 next * last < 0,則
- 返回False
- 返回True
讓我們看下面的實現來更好地理解:
示例
def solve(preorder): next = 0 last = 0 for i in range(len(preorder)-1): next = preorder[i] - preorder[i+1] last = preorder[i] - preorder[-1] if next * last < 0: return False return True preorder = [22, 12, 13, 15, 14] print(solve(preorder))
輸入
[22, 12, 13, 15, 14]
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP