尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

力扣 LeetCode 98. 验证二叉搜索树(Day9:二叉树)

力扣 LeetCode 98. 验证二叉搜索树(Day9:二叉树) 解题思路方法一改良版方法二class Solution { ListInteger list new ArrayList(); public boolean isValidBST(TreeNode root) { recur(root); for (int i 1; i list.size(); i) { if (list.get(i - 1) list.get(i)) return false; } return true; } public void recur(TreeNode root) { if (root null) return; recur(root.left); list.add(root.val); recur(root.right); } }方法二直接中序遍历放入数组非常直观的想法需要注意用for循环进行重复值的判断二叉搜索树不能有值相等的节点class Solution { ListInteger list new ArrayList(); public boolean isValidBST(TreeNode root) { recur(root); ListInteger res new ArrayList(list); Collections.sort(list); for (int i 1; i list.size(); i) { if (list.get(i - 1).equals(list.get(i))) return false; } if (list.equals(res)) return true; return false; } public void recur(TreeNode root) { if (root null) return; recur(root.left); list.add(root.val); recur(root.right); } }方法三引入额外的一个变量进行比较class Solution { long pre Long.MIN_VALUE; public boolean isValidBST(TreeNode root) { if (root null) return true; boolean isLeft isValidBST(root.left); if (pre root.val) pre root.val; else return false; boolean isRight isValidBST(root.right); return isLeft isRight; } }方法三与前一个节点进行比较个人觉得比方法二更好理解class Solution { TreeNode pre null; public boolean isValidBST(TreeNode root) { if (root null) return true; boolean isLeft isValidBST(root.left); if (pre ! null pre.val root.val) return false; pre root; boolean isRight isValidBST(root.right); return isLeft isRight; } }
返回列表