題目以下java
給定一個二叉樹,判斷其是不是一個有效的二叉搜索樹。 假設一個二叉搜索樹具備以下特徵: 節點的左子樹只包含小於當前節點的數。 節點的右子樹只包含大於當前節點的數。 全部左子樹和右子樹自身必須也是二叉搜索樹。 示例 1: 輸入: 2 / \ 1 3 輸出: true 示例 2: 輸入: 5 / \ 1 4 / \ 3 6 輸出: false 解釋: 輸入爲: [5,1,4,null,null,3,6]。 根節點的值爲 5 ,可是其右子節點值爲 4 。
# Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solution(object): def isValidBST(self, root): """ :type root: TreeNode :rtype: bool """ ansList = self.helper(root) for i in range(len(ansList)-1): if (ansList[i] >= ansList[i+1]): return False return True def helper(self, root): if root == None: return [] else: return self.helper(root.left) + [root.val] + self.helper(root.right)
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } class Solution { public boolean isValidBST(TreeNode root) { return helper(root, Long.MIN_VALUE, Long.MAX_VALUE); } public boolean helper(TreeNode root, Long min, Long max) { if (root == null) { return true; } if ((root.val <= min) || (root.val >= max)) { return false; } return helper(root.left, min, (long) root.val) && helper(root.right, (long) root.val, max); } }