From 1eb0084ca8087991ac799084404239c9e361d754 Mon Sep 17 00:00:00 2001 From: jasonlu Date: Sat, 13 Mar 2021 18:22:17 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=9098.=E9=AA=8C=E8=AF=81=E4=BA=8C?= =?UTF-8?q?=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E3=80=91=E3=80=90Java?= =?UTF-8?q?=E3=80=91=E3=80=90=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84=E8=A7=A3?= =?UTF-8?q?=E6=B3=95=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\344\275\234\351\233\206\351\224\246.md" | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" index 311afd7..5d77ceb 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\346\223\215\344\275\234\351\233\206\351\224\246.md" @@ -121,28 +121,6 @@ boolean isValidBST(TreeNode root, TreeNode min, TreeNode max) { } ``` -扩展解法: -对于BST,有一个重要的性质,即“BST的中序遍历是单调递增的”。抓住这个性质,我们可以通过中序遍历来判断该二叉树是不是BST。 -```java -TreeNode preNode = null; -public boolean isValidBST(TreeNode root) { - if (root == null) return true; - - boolean leftRes = isValidBST(root.left); - - if (preNode != null && root.val <= preNode.val) { - return false; - } - preNode = root; - - boolean rightRes = isValidBST(root.right); - - return leftRes && rightRes; - } -``` -我们定义preNode节点表示上一个遍历的节点,在中序遍历的时候,比较当前节点和preNode节点的大小,一旦有节点小于或等于前一个节点,则不满足BST的规则,直接返回false,否则遍历结束,返回true。 - - **一、在 BST 中查找一个数是否存在** 根据我们的指导思想,可以这样写代码: @@ -469,4 +447,28 @@ class Solution: while node.right: node = node.right return node -``` \ No newline at end of file +``` + +### java +``` +/** +* 第【98】题的扩展解法: +* 对于BST,有一个重要的性质,即“BST的中序遍历是单调递增的”。抓住这个性质,我们可以通过中序遍历来判断该二叉树是不是BST。 +* 我们定义preNode节点表示上一个遍历的节点,在中序遍历的时候,比较当前节点和preNode节点的大小,一旦有节点小于或等于前一个节点,则不满足BST的规则,直接返回false,否则遍历结束,返回true。 +*/ +TreeNode preNode = null; +public boolean isValidBST(TreeNode root) { + if (root == null) return true; + + boolean leftRes = isValidBST(root.left); + + if (preNode != null && root.val <= preNode.val) { + return false; + } + preNode = root; + + boolean rightRes = isValidBST(root.right); + + return leftRes && rightRes; +} +``` -- GitLab