当前位置: 首页 > news >正文

完美建设工程有限公司网站html教程 pdf

完美建设工程有限公司网站,html教程 pdf,外贸都是在哪些网站做,wordpress小工具找不到文章目录 题目方法一:BFS 层序遍历方法二: 递归方法三: 中序遍历(栈)方法四: 中序遍历(递归) 题目 思路就是首先得知道什么是二叉搜索树 左孩子在(父节点的最小值&#x…

文章目录

    • 题目
    • 方法一:BFS 层序遍历
    • 方法二: 递归
    • 方法三: 中序遍历(栈)
    • 方法四: 中序遍历(递归)

题目

在这里插入图片描述
在这里插入图片描述

思路就是首先得知道什么是二叉搜索树
左孩子在(父节点的最小值,父节点)区间内
右孩子在(父节点,父节点的最大值)区间内
只要满足这两点就行

方法一:BFS 层序遍历

利用层序遍历 拿到每一个节点 并且给每一个结点配备一个最大值和最小值的队列
只要节点在最大值和最小值之间就满足二叉搜索树的条件
在这里插入图片描述

在这里插入图片描述

public boolean isValidBST(TreeNode root) {if(root == null) return true;Queue<TreeNode> queue = new LinkedList<>();Queue<Long> minValues = new LinkedList<>();//定义两个队列来记录每一个节点的最大值和最小值情况  Queue<Long> maxValues = new LinkedList<>();queue.offer(root);minValues.offer(Long.MIN_VALUE); // 初始最小值为maxValues.offer(Long.MAX_VALUE); // 初始最大值为while(!queue.isEmpty()){int count = queue.size();for(int i = 0 ; i < count ; i++){TreeNode node =  queue.poll();Long minValue = minValues.poll();//弹出该对比节点的最大值和最小值情况   节点值必须在这个区间内才满足条件Long maxValue = maxValues.poll();if (  node.val <= minValue ||  node.val >= maxValue) {return false;}if(node.left != null){queue.offer(node.left);minValues.offer(minValue);//  左子树的最小值沿用上一次的最小值maxValues.offer((long)node.val); // 左子树的最大值为当前节点值}if(node.right != null){queue.offer(node.right);minValues.offer((long)node.val); // 右子树的最小值为当前节点值maxValues.offer(maxValue); // 右子树的最大值沿用上一次的最大值}}}return true;}

方法二: 递归

	   // root.val要在  (min,max) 区间才是二叉搜索数//  判断左子树 和右子树是否是搜索二叉树   //   ==左孩子在(父节点的最小值,父节点)区间内==// 	  ==右孩子在(父节点,父节点的最大值)区间内==
    public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);   // 不能用Integer.MAX  2147483647  案例有root就等于2147483647  明显不满足搜索树}public boolean isValidBST(TreeNode root,long  min,long  max) {if(root == null ){return true;}if(root.val <= min || root.val >= max) return false;//root.val要在  (min,max) 区间才是二叉搜索数return isValidBST(root.left,min,root.val)&&isValidBST(root.right,root.val,max);//判断左子树 和右子树是否是搜索二叉树   //   ==左孩子在(父节点的最小值,父节点)区间内==// 	  ==右孩子在(父节点,父节点的最大值)区间内==}

方法三: 中序遍历(栈)

  1. 核心先遍历左子树,直到左子树为null 再去遍历右子树,直到右子树为null
  2. 每弹出一个节点的值小于等于前一个 inorder,说明不是二叉搜索树
  3. 在遍历右子树的同时 更新inorder值为当前节点
  public boolean isValidBST(TreeNode root) {Deque<TreeNode> stack = new LinkedList<TreeNode>();//栈Long inorder = Long.MIN_VALUE;while(!stack.isEmpty() || root !=null){while(root != null){//先去遍历左子树stack.push(root);root = root.left;}root = stack.pop();// 如果中序遍历得到的节点的值小于等于前一个 inorder,说明不是二叉搜索树if(root.val <= inorder) return false;inorder = (long)root.val;root = root.right;//遍历右子树}return true;}

方法四: 中序遍历(递归)

中序遍历时,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足 BST,继续遍历;否则直接返回 false。

 long pre = Long.MIN_VALUE;public boolean isValidBST(TreeNode root) {if(root == null) return true;//判断左子树是不是 二叉搜索时if(!isValidBST(root.left)) return false;if(root.val <= pre) return false ;else pre = root.val;//判断右子树是不是 二叉搜索时if(!isValidBST(root.right)) return false;return true;}
http://www.yayakq.cn/news/777214/

相关文章:

  • 建设网站需要购买虚拟主机吗dedecms网站建设合同
  • 免费做网站自助建站电子商务网站建设与网页设计
  • dede旅游网站服装企业微网站建设
  • 无锡华庄行业网站建设河北建设厅官方网站八大员考试
  • 如何做网站的流量分析手机新手学做网站
  • 外贸公司的网站建设模板国家企业信用公示信息查询平台
  • 北京教育学会网站建设最新的军事新闻报道
  • 信息产业部互联网网站管理工作细则wordpress vps 安装
  • app网站制作公司音乐网站建设流程
  • 乐度网上购物网站建设方案电商网站开发设计方案有哪些
  • 凡科网做网站视频百度高级搜索怎么用
  • 网站备案号填写中机建设一公司网站
  • 网站建设及安全管理网络科技有限公司英文
  • 亚马逊备案网站建设wordpress如何放入域名
  • 新闻类网站开发多久短视频营销方式有哪些
  • 成都市做网站网站建设客户资料收集清单
  • 页网站设计百度爱采购网站官网
  • 网站备案 假通信地址上海建站模板源码
  • 中国建设执业资格注册管理中心网站制作公司网站价格
  • 深圳网站公司招聘wordpress 前台登录美化
  • 做vlogger的网站有哪些天津企业网站设计制作
  • 网站开发神器天城建设网站
  • 网站建设在微信里打广告内容wordpress如何cdn加速
  • 网站建站程序网站在线报名怎么做
  • 用vs2008做网站富海人才招聘网官网
  • 做网站要学什么语言网站建设 商业价值
  • 济源市网站建设国外财经网站是怎么做的
  • 个人博客网站模板wordpress网站的百度地图怎么做
  • 如何设计网站风格推广网站制作怎么做
  • 域名网站备案管理系统锡林浩特网站建设微信开发