初涉深度优先搜索--Java学习笔记(二)
版权声明:
本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处.
上周学习了数组和链表,有点基础了解以后,这周初步探索了一下深度优先搜索。对于文科生的我来说,这个名词听起来有点可怕。于是我通过leetcode上的一个难度为medium的题目来逐渐认识这个概念的。这道题目是Validate Binary Search Tree(题号为98)。下面我将通过这道题作为引子,整理一下上周学习到的东西。
一、树
这道题目是让我们判断这棵树是否为有效二叉查找树。但是我连树是什么都是一脸茫然。后来通过学习youtube上的视频,对他有逐步了解。树的概念容易理解,现在主要看看它的存储结构(其实我也不知道了解到存储结构有什么用)



二、二叉树(Binary Tree)
有了对树的认识以后,二叉树的基本概念就更加容易理解了。
- public static void main(String[] args) {
- /* Making a tree like :
- 0
- / \
- 1 2
- /
- 3
- */
- TreeNode root = new TreeNode(0);
- root.left = new TreeNode(1);
- root.right = new TreeNode(2);
- root.left.left = new TreeNode(3);

public static void main(String[] args) {
TreeNode root=new TreeNode(6);
root.left=new TreeNode(1);
root.right=new TreeNode(7);
root.left.left=new TreeNode(4);
}
public static class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val=x;
}
}
public static class Solution{
public boolean isValidBST(TreeNode root){
return isValidBST(root,Double.NEGATIVE_INFINITY,Double.POSITIVE_INFINITY);
}
public boolean isValidBST(TreeNode p,double min, double max){
if(p==null)
return true;
if(p.val<=min||p.val>=max)
return false;
return isValidBST(p.left,min,p.val)&&isValidBST(p.right,p.val,max);
}
}
return isValidBST(root,Double.NEGATIVE_INFINITY,Double.POSITIVE_INFINITY);
}
public boolean isValidBST(TreeNode p,double min, double max){
if(p==null)
return true;
if(p.val<=min||p.val>=max)
return false;
return isValidBST(p.left,min,p.val)&&isValidBST(p.right,p.val,max);
初涉深度优先搜索--Java学习笔记(二)的更多相关文章
- 平面上的地图搜索--Java学习笔记(四)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 这一个月以来,都在学习平面上的地图搜索,主 ...
- 深度优先搜索 DFS 学习笔记
深度优先搜索 学习笔记 引入 深度优先搜索 DFS 是图论中最基础,最重要的算法之一.DFS 是一种盲目搜寻法,也就是在每个点 \(u\) 上,任选一条边 DFS,直到回溯到 \(u\) 时才选择别的 ...
- Java学习笔记二十九:一个Java面向对象的小练习
一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...
- 数组排序、递归——(Java学习笔记二)
升序: 选择排序: 选定一个元素,一次和后面的元素相比较,如果选定的元素大雨后面的比较元素,就交换位置 先出现最小值,最后出现最大值. public stat ...
- Java学习笔记二---设置环境变量JAVA_HOME,CLASSPATH,PATH
1.环境变量包括: JAVA_HOME,CLASSPATH,PATH 2.设置环境变量的目的: 路径搜索,方便查找到jdk的安装路径.方便搜索用到的类文件.方便搜索用到的可执行文件如java,java ...
- Java学习笔记二:数据类型II
GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一 Java中的数据类型 Java ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- Java学习笔记二十七:Java中的抽象类
Java中的抽象类 一:Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
随机推荐
- 如何生成git的公钥和私钥
转载地址:http://blog.csdn.net/wqjsir/article/details/17386087 一. Git windows 客服端(MsysGit)下载 下载地址:http:// ...
- Awesome
DotNet 资源大全中文版(Awesome最新版) http://www.cnblogs.com/best/p/5876596.html Java资源大全中文版(Awesome最新版) http:/ ...
- 一、常见PHP网站安全漏洞
对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍. 1.session文件漏洞 Sess ...
- Dev GridView行拖拽
http://blog.csdn.net/keyrainie/article/details/8513802 http://www.cnblogs.com/qq4004229/archive/2012 ...
- php字符串匹配
$a='abcdef'; $b='abc'; similar_text($a,$b,$num); $num=3;
- linux系统CentOS7
linux系统CentOS7 到http://mirrors.sohu.com/mysql/下载想要的mysql版本 这里用到的是 mysql-5.6.33-linux-glibc2.5-x86_64 ...
- storm学习好文链接
大圆的那些事:http://www.cnblogs.com/panfeng412/tag/Storm/ xcc的博客:http://blog.csdn.net/damacheng/article/ca ...
- React 组件性能优化
React组件性能优化 前言 众所周知,浏览器的重绘和重排版(reflows & repaints)(DOM操作都会引起)才是导致网页性能问题的关键.而React虚拟DOM的目的就是为了减少浏 ...
- Leetcode Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
- CI框架使用PHPmail插件发送QQ邮件:
有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...