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

wordpress打不开页面首页排名关键词优化

wordpress打不开页面,首页排名关键词优化,外贸简单网站建设,咨询app开发制作公司1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…

1 中序遍历和搜索树原理

二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是:

  • 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;
  • 若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值;
  • 它的左、右子树也分别为二叉搜索树,比如下面的例子:

在这里插入图片描述

这两棵树的中序遍历分别是[1, 2, 3, 4, 5, 6, 7, 8, 9][6, 7, 8, 9],都是二叉搜索树。

2 二叉搜索树中搜索特定值

力扣700题,给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

比如target为3,给定二叉搜索树:

			5/  \3    4/ \1   2

应该返回如下子树:

		  3  / \1   2

2.1 递归实现

使用递归来实现,先来分析一下有哪些情况:

  • 如果根节点root === null或者root.val === target就直接返回根节点;
  • 如果target < root.val,说明比右子树的值小,去根节点的左子树进行查找searchBST(root.left, target);
  • 如果target > root.val,说明比左子树的值大,去根节点的右子树进行查找searchBST(root.right, target)

递归完整代码如下:

// 递归法
function searchBST(root, target) {// 如果根节点为空或者root.val === target,直接返回rootif (root === null || root.val === target) {return root;}// 如果target < root.val,进入根节点的左子树查找// 如果target > root.val,进入根节点的右子树查找return target < root.val ? searchBST(root.left, target) : searchBST(root.right, target);
}

2.2 迭代实现

迭代逻辑:

  • 如果根节点root === null或者root.val !== target,进入下面的判断
    • 如果target < root.val,说明比右子树的值小,去根节点的左子树进行查找,root = root.left;
    • 如果target > root.val,说明比左子树的值大,去根节点的右子树进行查找,root = root.right

迭代完整代码如下:

// 迭代法
function searchBST(root, target) {// 如果根节点为空或者target !== root.valwhile (root !==null && target !== root.val) {// 如果target < root.val,进入根节点的左子树查找,root = root.left// 如果target > root.val,进入根节点的右子树查找,root = root.rightroot = (target < root.val ? root.left : root.right);}return root;
}

3 验证二叉搜索树

力扣98题,给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效二叉树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

分析:根据题目以及中序遍历的特性,可以知道二叉搜索树中序遍历得到的序列是一个升序序列,要判断是否是一个有效二叉树,只需要在中序遍历的时候一边遍历一边检查当前节点的值是否大于前一个遍历到的节点值即可。

3.1 递归实现

递归实现,代码如下:

function isValidBST(root) {let pre = Number.MIN_SAFE_INTEGER;return validBST(root);function validBST(node) {if (node === null) {return true;}// 如果左子树某个元素不满足要求就退出if (!validBST(node.left)) {return false;}// 如果当前节点值≤中序遍历前一个节点的值,不能满足二叉搜索树条件if (node.val <= pre) {return false;}pre = node.val;return validBST(node.right);}
}

3.2 迭代实现

测试用例的最小节点有可能是javascript中的最小值,因此初始化preVal = -Infinity

function isValidBST(root) {const nodeStack= [];let preVal = -Infinity;while (nodeStack.length !== 0 || root !== null) {while (root !== null) {nodeStack.push(root);// 先遍历左子树root = root.left;}// 比较左子树中间根节点与前一个节点的值,如果小与前一个节点值,说明不是二叉搜索树root = nodeStack.pop();if (root.val <= preVal) {return false;}preVal = root.val;// 再遍历右子树root = root.right;}return true;
}
http://www.yayakq.cn/news/727197/

相关文章:

  • 天津网站建设服务电话建设网站需要什么技术人员
  • 幻灯网站源码建设厅网站查询三类人员
  • 做网站首页文字排版技巧wordpress 简单主题
  • 哪些网站在哪找的湖南湘潭网站建设
  • js做音乐网站用thinksns做的网站
  • 赤峰做网站的网络公司sem竞价推广
  • 建设官方网站e路护航青浦专业做网站
  • 免费的公文写作网站微信平台网站开发
  • 北京门户网站制作公司南宁网站推广方案如何做
  • 帮别人建网站赚钱吗注册一个网站域名一年需要多少钱
  • 慕枫网站建设wholee跨境电商平台
  • 电影网站排名怎么做食品包装设计公司
  • 威海市环翠区建设局网站wordpress表单提交 阿里云邮箱
  • 百度站长工具seo查询界面十分好看的网站
  • 广州网站建设制作的公司百度公司有哪些部门
  • 深圳网站设计互联网品牌直播网站开发
  • 上海房地产网站官网建设银行官方门户网站
  • 学网站开发去哪学wordpress 注册发邮件
  • 给公司做一个网站自己做抽奖网站违法
  • 布局网站开发微信营销软件排行榜
  • win7 网站建设关键词seo优化软件
  • 网站开发恶意索赔假冒中国建设银行的网站
  • 无极磁铁网站晋江做任务的网站
  • 商标做网站logo滨州建网站
  • 白云区建网站网站开发的公司电话
  • 加拿大服务器做网站域名到期 网站打不开
  • 网站优化服务网站建设费用摊销年限
  • 专门找人做软件的网站wordpress小说
  • vs做网站怎么添加子页公司网站开发和设计 怎么开票
  • 做图片网站会侵权吗社交网站开发