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

安岳网站建设wordpress 招聘网站模板

安岳网站建设,wordpress 招聘网站模板,东莞网络推广运营平台,山东省建设工程信息网站题目 给定一棵二叉搜索树和它的一个节点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/786384/

相关文章:

  • 自己搭建网站需要什么哔哩哔哩网页版入口链接
  • 佛山网站建设开发团队长春市防疫最新消息数据
  • 专业的手机网站建设公司哪家好国外做网站公司能赚钱吗
  • 网站网页?问?网站为什么百度搜不到了
  • 淘宝优惠券网站开发广州知名网站建设后台管理便捷
  • 郑州高端网站郑州网站建设知乎
  • 域名虚拟服务器做网站semi final
  • 网络技术与网站建设北京网站建设 app
  • 山东平台网站建设价格郑州软件培训学校哪个好
  • 南昌网站建设方案维护霸州网站设计
  • 一般网站建设企业美化网站代码
  • 织梦网站程序安装教程网站模块源码
  • 高端网站定制建设公司哪家好浏览器什么网站都能打开的
  • 专门做简历的网站软件品牌推广公司
  • 网站优化推广软件做餐饮连锁在哪个网站看
  • 潍坊知名网站建设公司微网站怎么做百度关键词排名
  • 社交网站开发项目计划报告企业网站建设哪家最好
  • 网站的规划与建设案例分析网站建设大作业有代码
  • 东莞设计制作网站制作360网站图标怎么做
  • 中国互联网站建设中心建站网上在线注册公司
  • 鞍山58二手车太原seo关键词排名优化
  • 怎样在网站图片做超级链接国家网站域名
  • 邢台网站推广多少钱如何创建网站的快捷方式
  • 网站页脚优化怎么做如何查看网站是否被百度收录
  • 网站推广怎么做asp网站打开
  • 58网站怎么样做效果会更好搜索app下载
  • php除了做网站三合一网站建设官网
  • 专业做网站企业网页设计教程电子书
  • 设计公司网站欣赏建网站培训机构
  • 网站标题改不了怎样做品牌推广网站