leetCode練習(98)
阿新 • • 發佈:2018-12-24
題目:Validate Binary Search Tree
難度:medium
問題描述:
Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node's key.
- The right subtree of a node contains only nodes with keys greater than
- Both the left and right subtrees must also be binary search trees.
Example 1:
2 / \ 1 3Binary tree
[2,1,3]
, return true.
Example 2:
1 / \ 2 3Binary tree
[1,2,3]
, return false.
解題思路:
檢驗一棵樹是不是二叉搜尋樹。中序遍歷整棵樹,檢驗輸出元素是不是有序的即可。
具體程式碼如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public boolean isValidBST(TreeNode root) { if(root==null||root.left==null&&root.right==null){ return true; } ArrayList<Integer> list=new ArrayList<Integer>(); zhongxubianli(root,list); int temp=0,w=0; Iterator<Integer> iter=list.iterator(); if(iter.hasNext()){ temp=iter.next(); } while(iter.hasNext()){ w=iter.next(); if(w<=temp){ return false; } temp=w; } return true; } public void zhongxubianli(TreeNode root,ArrayList<Integer> list){ if(root.left!=null){ zhongxubianli(root.left,list); } list.add(root.val); if(root.right!=null){ zhongxubianli(root.right,list); } } }