算法学习(六)判断二叉树是否为二叉搜索树

编程入门 行业动态 更新时间:2024-10-12 16:25:50

<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法学习(六)判断二叉树是否为二叉搜索树"/>

算法学习(六)判断二叉树是否为二叉搜索树

描述

给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。

二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点。

例:

我的解法:

        定义一个全局节点保存当前节点的根节点信息,递归该二叉树,判断当前节点的左节点与右节点是否满足搜索树条件,注意:防止左子树的当前节点的右节点超过根节点,需要额外的进行判断,右子树也同理

其他解法:

        中序遍历二叉树,观察结果是否有序来判断是否为二叉搜索树(略)

/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @return bool布尔型*/boolean b = true;TreeNode t;public boolean isValidBST (TreeNode root) {// write code here//或者采用中序遍历搜索树一定有序来判断t = root;a(root);return b;}public void a(TreeNode root) {if (root == null||b==false)return;//判断当前节点的左子树if (root.left != null) {if (root.left.val > root.val) {b = false;return;}if (t.val < root.val) {//说明当前节点是根节点的右子树if (root.left.val < t.val) {//保证根节点的左节点的右节点要大于根节点b = false;return;}}}//判断当前节点的右子树if (root.right != null) {if (root.right.val < root.val) {b = false;return;}if (t.val > root.val) {//说明当前节点是根节点的左子树if (root.right.val > t.val) {//保证根节点的右节点的左节点要大于根节点b = false;return;}}}t = root;a(root.left);a(root.right);}
}

 

更多推荐

算法学习(六)判断二叉树是否为二叉搜索树

本文发布于:2023-12-03 19:32:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1656995.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   为二   二叉树

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!