leetcode-15-[654]最大二叉树[617]合并二叉树[700]二叉搜索树中的搜索[98]验证二叉搜索树

一、[654]最大二叉树

注意:可以与后序中序建树一起写,思想类似

java 复制代码
class Solution {
    public TreeNode constructMaximumBinaryTree(int[] nums) {
        return traversal(nums,0, nums.length);
    }
    TreeNode traversal(int[] nums,int begin,int end){
        //左闭右开
        if(begin>=end){
            return null;
        }
        if(end-begin==1){
            return new TreeNode(nums[begin]);
        }
        int max=nums[begin];
        int index=begin;
        for(int i=begin;i<end;i++){
            if(nums[i]>max){
                max=nums[i];
                index=i;
            }
        }
        TreeNode root=new TreeNode(max);
        root.left=traversal(nums,begin,index);
        root.right=traversal(nums,index+1,end);
        return root;
    }
}

二、[617]合并二叉树

注意:也可以新建树来存储节点

java 复制代码
class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if(root1==null){
            return root2;
        }
        if(root2==null){
            return root1;
        }
        root1.val= root1.val+ root2.val;
        root1.left=mergeTrees(root1.left,root2.left);
        root1.right=mergeTrees(root1.right,root2.right);
        return root1;
    }
}

三、[700]二叉搜索树中的搜索

重点;利用二叉搜索树的特性

本题解法多样。

java 复制代码
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root==null||root.val==val){
            return root;
        }
        if(val<root.val){
            return searchBST(root.left,val);
        }else{
            return searchBST(root.right,val);
        }

    }
}

四、[98]验证二叉搜索树

重点:类似于数组的双指针

中序遍历!!!

java 复制代码
class Solution {
    TreeNode pre=null;
    public boolean isValidBST(TreeNode root) {
        if(root==null){
            return true;
        }
        //中序遍历!!!!
        //搜索树一般都为中序遍历
        boolean l = isValidBST(root.left);
        if(pre!=null&&pre.val>=root.val)
        {
            return false;
        }
        pre= root;
        boolean r = isValidBST(root.right);
        return l&&r;
    }
}
相关推荐
c#上位机25 分钟前
halcon图像增强——图像取反
图像处理·算法·c#·halcon
zheyutao27 分钟前
割点和桥
算法·图论
@小码农1 小时前
2025年北京海淀区中小学生信息学竞赛第二赛段C++真题
开发语言·数据结构·c++·算法
蓝域小兵1 小时前
齐次方程组和非齐次方程组有什么区别
人工智能·算法·机器学习
0 0 01 小时前
CCF-CSP第39次认证第三题——HTTP 头信息(HPACK)【C++】
开发语言·c++·算法
Data_agent1 小时前
1688按图搜索1688商品(拍立淘)API ,Python请求示例
爬虫·python·算法·图搜索算法
汉克老师1 小时前
2023年海淀区中小学信息学竞赛复赛(小学组试题第二题 回文时间 (time))
c++·算法·北京海淀中小学信息竞赛·模拟法
代码雕刻家2 小时前
1.9.课设实验-数据结构-图-校园跑最短路径
c语言·数据结构·算法·图论
white-persist2 小时前
【攻防世界】reverse | re1-100 详细题解 WP
c语言·开发语言·网络·汇编·python·算法·网络安全
.YM.Z2 小时前
【数据结构】:排序(二)——归并与计数排序详解
数据结构·算法·排序