LeetCode -98. Validate Binary Search Tree解題紀錄
題目
LeetCode - 98. Validate Binary Search Tree
解題思路
題目給一顆Binary Search Tree
簡稱BST
,我們要判斷他是否為Validate
!
- BST定義:
- 以左邊節點 ( left node ) 作為根的子樹 ( sub-tree ) 的所有值都小於根節點 ( root )
- 以右邊節點 ( right node ) 作為根的子樹 ( sub-tree ) 的所有值都大於根節點 ( root )
- 任意節點 ( node ) 的左、右子樹也分別符合 BST 的定義
- 不存在任何鍵值 ( key/value ) 相等的節點。
這一題可以先用InOrder
的方式來Trace這棵樹,對 BST 做 inorder traversal
就是由小到大依序遍歷。將Trace的順序存進一個list,若是符合BST則list裡的數字會由小到大排列,所以只要不符合由小到大排列,就可以確定他是InValidate
的BST
- 前序 (preorder), 中序 (inorder) 和後序 (postorder) 是指遍歷二元樹 (binary tree) 時,父節點相對於左右節點的順序。假設二元樹如下:則三種遍歷的順序依序為:
4
2 6
1 3 5 7
- 前序 (preorder): 中 -> 左 -> 右,4213657
- 中序 (inorder): 左 -> 中 -> 右,1234567
- 後序 (postorder): 左 -> 右 -> 中,1325764
Code
1 | # Definition for a binary tree node. |
Reference
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment