剑指Offer之Java算法习题精讲二叉树专项训练


Posted in Java/Android onMarch 21, 2022

题目一

剑指Offer之Java算法习题精讲二叉树专项训练

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int i = 0;
    int res = 0;
    public int kthSmallest(TreeNode root, int k) {
        method(root,k);
        return res;
    }
     public void method(TreeNode root, int k){
        if(root==null) return ;
        method(root.left,k);
        i++;
        if(i==k){
            res = root.val;
            return ;
        }
        method(root.right,k);
     }
}

题目二

剑指Offer之Java算法习题精讲二叉树专项训练

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        method(root);
        return root;
    }
    public void method(TreeNode root) {
        if(root==null){
            return;
        }
        method(root.right);
        sum+=root.val;
        root.val = sum;
        method(root.left);
 
    }
}

题目三

剑指Offer之Java算法习题精讲二叉树专项训练

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        return method(root,null,null);
    }
    public boolean method(TreeNode root,TreeNode min,TreeNode max){
        if(root==null) return true;
        if(min!=null&&root.val<=min.val) return false;
        if(max!=null&&root.val>=max.val) return false;
        return method(root.left,min,root)&&method(root.right,root,max);
    }
}

题目四

剑指Offer之Java算法习题精讲二叉树专项训练

解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root==null) return null;
        if(root.val==val) return root;
        if(root.val>=val){
            return searchBST(root.left,val);
        }
        if(root.val<val){
            return searchBST(root.right,val);
        }
        return null;
    }
}

题目五

剑指Offer之Java算法习题精讲二叉树专项训练

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        return  method(root,val);
    }
    public TreeNode method(TreeNode root, int val){
        if(root==null) return new TreeNode(val);
        if (root.val < val) 
            root.right = insertIntoBST(root.right, val);
        if (root.val > val) 
            root.left = insertIntoBST(root.left, val);
        return root;
    }
}

题目六

剑指Offer之Java算法习题精讲二叉树专项训练

算法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode deleteNode(TreeNode root, int key) {
        if (root == null) return null;
        if (root.val == key){
            if (root.left == null) return root.right;
            if (root.right == null) return root.left;
            TreeNode minNode = getMin(root.right);
            root.right = deleteNode(root.right, minNode.val);
            minNode.left = root.left;
            minNode.right = root.right;
            root = minNode;
        }else if(root.val>key){
            root.left = deleteNode(root.left,key);
        }else{
            root.right = deleteNode(root.right,key);
        }
        return root;
    }
    TreeNode getMin(TreeNode node) {
        while (node.left != null) node = node.left;
        return node;
    }   
}

到此这篇关于剑指Offer之Java算法习题精讲二叉树专项训练的文章就介绍到这了,更多相关Java 二叉树内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
基于Java的MathML转图片的方法(示例代码)
Jun 23 Java/Android
SpringCloud的JPA连接PostgreSql的教程
Jun 26 Java/Android
ObjectMapper 如何忽略字段大小写
Jun 29 Java/Android
springboot 启动如何排除某些bean的注入
Aug 02 Java/Android
SpringDataJPA实体类关系映射配置方式
Dec 06 Java/Android
SpringDataJPA在Entity中常用的注解介绍
Dec 06 Java/Android
java代码实现空间切割
Jan 18 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 Java/Android
ConditionalOnProperty配置swagger不生效问题及解决
Jun 14 Java/Android
MyBatis XPathParser解析器使用范例详解
Jul 15 Java/Android
SpringBoot Http远程调用的方法
Aug 14 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
springboot+zookeeper实现分布式锁
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 #Java/Android
Spring this调用当前类方法无法拦截的示例代码
SpringCloud Feign请求头删除修改的操作代码
Mar 20 #Java/Android
JavaWeb实现显示mysql数据库数据
关于Mybatis中SQL节点的深入解析
You might like
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jsTree使用记录实例
2016/12/01 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
vue实现通讯录功能
2018/07/14 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python reversed函数及使用方法解析
2020/03/17 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
小区停车场管理制度
2014/01/27 职场文书
销售顾问工作计划书
2014/08/15 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
汇报材料怎么写
2014/12/30 职场文书
地方课程教学计划
2015/01/19 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
理解python中装饰器的作用
2021/07/21 Python