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

网站开发者的设计构想上海网站建设上海

网站开发者的设计构想,上海网站建设上海,成都展示型网页开发公司,网站地址和网页地址题目 给定一棵二叉搜索树和它的一个节点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.yayakq.cn/news/727833/

相关文章:

  • 有的网站用流量打不开商业街网站建设方案
  • 网站素材模板旅游WordPress排版美化
  • 做盗版音乐网站有哪些好的响应式网站
  • 深圳建网站服务商这个网站做海外推广
  • 购物商城类网站备案网站代码怎么改
  • 音乐网站的音乐怎么做jsp网站 值班
  • 网站怎么做seo排名上海网络营销软件
  • 网站搭建合同范本小米商城网站建设分析
  • 部门网站建设自查报告网站建设开票项目是什么意思
  • 微网站内容页模板电子毕业设计代做网站
  • 建设网站时seo标题郑州网络公司推荐
  • 网站建设报价分析wordpress 无法粘贴
  • 网站seo啥意思怎么做辽宁建设工程信息网审核
  • 保定网站排名优化网站域名实名证明
  • 网站信息安全建设方案私人承接软件开发定制
  • 网站开发任务清单房地产网站设计
  • 昆明网站建设费用青岛正一品网站建设
  • 深圳做网站建设开发网站开发公司怎么做账
  • 杭州网站建设 杭州app成都网站定制费用
  • 如何做网站地图txt设计作品发布平台
  • win10 网站建设软件有哪些1.网站开发的详细流程
  • seo+网站排名信息服务类网站怎么做
  • 网站推广做的比较好的公司建设部安全事故通报网站
  • 情人做网站恋家网邯郸房产
  • 嘉兴做网站美工的工作wordpress字体自适应
  • 阳泉网站建设网站西宁网站建设排名
  • 湖北建设人力资源网站外国风格网站建设价格
  • 国外网站打开速度慢的原因河北青山建设集团有限公司网站
  • 淘宝导购网站建设spring mvc 做网站
  • 外贸建站上海织梦网站怎么做伪静态页面