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

宁波机械加工网seo顾问阿亮博客

宁波机械加工网,seo顾问阿亮博客,网站上做地图手机上显示,石家庄简单的网页制作题目 给定一棵二叉搜索树和它的一个节点p,请找出按中序遍历的顺序该节点p的下一个节点。假设二叉搜索树中节点的值都是唯一的。例如,在图8.9的二叉搜索树中,节点8的下一个节点是节点9,节点11的下一个节点是null。 分析&#xf…

题目

给定一棵二叉搜索树和它的一个节点p,请找出按中序遍历的顺序该节点p的下一个节点。假设二叉搜索树中节点的值都是唯一的。例如,在图8.9的二叉搜索树中,节点8的下一个节点是节点9,节点11的下一个节点是null。
在这里插入图片描述

分析:时间复杂度O(n)的解法

解决这个问题的最直观的思路就是采用二叉树的中序遍历。可以用一个布尔变量found来记录已经遍历到节点p。该变量初始化为false,遍历到节点p就将它设为true。在这个变量变成true之后遍历到的第1个节点就是要找的节点。

解:时间复杂度O(n)的解法

public class Test {public static void main(String[] args) {TreeNode node1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node5 = new TreeNode(5);TreeNode node6 = new TreeNode(6);node4.left = node2;node4.right = node5;node2.left = node1;node2.right = node3;node5.right = node6;TreeNode result = inorderSuccessor(node4, node5);System.out.println(result);}public static TreeNode inorderSuccessor(TreeNode root, TreeNode p) {Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;boolean found = false;while (cur != null || !stack.isEmpty()) {while (cur != null) {stack.push(cur);cur = cur.left;}cur = stack.pop();if (found) {break;}else if (p == cur) {found = true;}cur = cur.right;}return cur;}
}

分析: 时间复杂度O(h)的解法

下面按照在二叉搜索树中根据节点的值查找节点的思路来分析。从根节点开始,每到达一个节点就比较根节点的值和节点p的值。如果当前节点的值小于或等于节点p的值,那么节点p的下一个节点应该在它的右子树。如果当前节点的值大于节点p的值,那么当前节点有可能是它的下一个节点。此时当前节点的值比节点p的值大,但节点p的下一个节点是所有比它大的节点中值最小的一个,因此接下来前往当前节点的左子树,确定是否能找到值更小但仍然大于节点p的值的节点。重复这样的比较,直至找到最后一个大于节点p的值的节点,就是节点p的下一个节点。

解:时间复杂度O(h)的解法

public class Test {public static void main(String[] args) {TreeNode node1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node5 = new TreeNode(5);TreeNode node6 = new TreeNode(6);node4.left = node2;node4.right = node5;node2.left = node1;node2.right = node3;node5.right = node6;TreeNode result = inorderSuccessor(node4, node5);System.out.println(result);}public static TreeNode inorderSuccessor(TreeNode root, TreeNode p) {TreeNode cur = root;TreeNode result = null;while (cur != null) {if (cur.val > p.val) {result = cur;cur = cur.left;}else {cur = cur.right;}}return result;}
}
http://www.ritt.cn/news/7792.html

相关文章:

  • 自己做网站需要什么技能产品推广文案100字
  • ui设计就业前景seo沈阳
  • 站长工具综合查询站长工具怎样做企业推广
  • ecs 搭建wordpress关键词优化和seo
  • 找百度做的网站可以过户上海百度
  • 网站 模板 下载广告外链平台
  • 搭建什么网站赚钱企业网站推广可以选择哪些方法
  • 搜索引擎优化中的步骤包括南京seo公司排名
  • 网站建设与运营 好考吗seo关键词排名优化手机
  • 网站开发是什么职业桂林市天气预报
  • 品牌型网站建设方案推广品牌
  • 做网站源码爱站网关键词查询系统
  • 网站前台首页无法显示苏州关键词优化搜索排名
  • 网页设计与制作字体设置广州网站优化排名系统
  • 有了域名 网站建设百度学术官网首页
  • 深圳外贸网站建设企业seo刷关键词排名优化
  • 做微信公众号用什么网站近期国际新闻20条
  • 门户网站建设管理工作网站排名分析
  • 下载了一个asp网站但不知道管理员密码怎么办百度搜索排名靠前
  • 仓库改造类网站怎么做谷歌官方网站
  • 义乌建设局网站打不开seo外包网站
  • 做网站客户拖着不验收2022年十大流行语
  • 做视频资源网站有哪些内容2023最火的十大新闻
  • 常德地区网站建设中国舆情网
  • 网站布局分类免费个人网站建设
  • 陕西省建设厅证网站号多少seo推广有哪些方式
  • 网站建设中 什么意思爱站网站长百度查询权重
  • 中国建设招标网网站首页黑科技引流推广神器
  • 做网站怎么挣钱培训管理平台
  • 视频网站建设费用竞价托管代运营公司