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

四川省建设厅网站首页顺德企业网站制作

四川省建设厅网站首页,顺德企业网站制作,建筑行业公司排名,建立网站的流程题目链接#xff1a;无题目链接#xff0c;不知道为啥力扣上找不到这一题。 1. 题目介绍#xff08;08. 二叉树的下一个节点#xff09; 题目#xff1a;给定一个二叉树和其中的一个节点#xff0c;请找出中序遍历顺序的下一个节点并且返回。注意#xff0c;树中的节点…题目链接无题目链接不知道为啥力扣上找不到这一题。 1. 题目介绍08. 二叉树的下一个节点 题目给定一个二叉树和其中的一个节点请找出中序遍历顺序的下一个节点并且返回。注意树中的节点除了有两个分别指向左、右子节点的指针还要一个指向父节点的指针。 【测试用例】 示例1一颗有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示从子节点指向父节点的指针用虚线表示 中序遍历序列 {d,b,h,e,i,a,f,c,g} a的下一节点为fb的下一节点为h 2. 题解 2.1 讨论3种情况 – O(n) package com.thomas.offer;public class Offer08_BinaryTreeNext {// 定义二叉树节点结构public static class TreeNode {private String val;private TreeNode left;private TreeNode right;private TreeNode parent;public TreeNode(String val) {this.val val;}Overridepublic String toString() {return val ;}}/*3种情况1. 当前节点有右子树那么Next就是其右子树的最左子节点2. 当前节点无右子树如果该节点是父节点的左子节点那么Next就是其父节点3. 当前节点无右子树如果该节点是父节点的右子节点那么从其父节点开始向上查找直到找到其父节点是左子节点的父节点那么Next就是该父节点* */public static TreeNode nextNode(TreeNode node) {// 1. 判空操作if (node null) return null;// 2. 第一种情况节点有右子树Next为其右子树的最左子节点if (node.right ! null) {node node.right;while (node.left ! null) {node node.left;}return node;}// 3. 第二种情况节点无右子树且该节点为其父节点的左子节点Next为其父节点if (node node.parent.left) return node.parent;// 4. 第三种情况节点无右子树且该节点为其父节点的右子节点Next是一个父节点 Xxx父节点是该父节点的左子节点if (node node.parent.right) {// 循环结束条件node node.parent.left,// 即找到了其父节点是左子节点的父节点node node.parent;while (node ! node.parent.left) {node node.parent;// 注意最右节点也属于该情况但它无法满足循环结束条件在这里我们判断一下返回null即可if (node.parent null) {return null;}}return node.parent;}return null;}// 建树public static void createTree(TreeNode node,TreeNode left,TreeNode right,TreeNode parent) {node.left left;node.right right;node.parent parent;}public static void main(String[] args) {// 1。 创建二叉树节点对象TreeNode a new TreeNode(a);TreeNode b new TreeNode(b);TreeNode c new TreeNode(c);TreeNode d new TreeNode(d);TreeNode e new TreeNode(e);TreeNode f new TreeNode(f);TreeNode g new TreeNode(g);TreeNode h new TreeNode(h);TreeNode i new TreeNode(i);// 二叉树中序遍历 {d,b,h,e,i,a,f,c,g}// 2. 构造二叉树createTree(a, b, c, null);createTree(b, d, e, a);createTree(c, f, g, a);createTree(d, null, null, b);createTree(e, h, i, b);createTree(f, null, null, c);createTree(g, null, null, c);createTree(h, null, null, e);createTree(i, null, null, e);// 3. 调用nextNode方法打印结果System.out.println(nextNode(a)); // fSystem.out.println(nextNode(b)); // hSystem.out.println(nextNode(c)); // gSystem.out.println(nextNode(d)); // bSystem.out.println(nextNode(e)); // iSystem.out.println(nextNode(f)); // cSystem.out.println(nextNode(g)); // nullSystem.out.println(nextNode(h)); // eSystem.out.println(nextNode(i)); // a}} 3. 思考 找中序遍历二叉树的下一个节点主要就分为三种情况 当前节点有右子树那么Next就是其右子树的最左子节点当前节点无右子树如果该节点是父节点的左子节点那么Next就是其父节点当前节点无右子树如果该节点是父节点的右子节点那么从其父节点开始向上查找直到找到其父节点是左子节点的父节点那么Next就是该父节点。 4. 可参考资料 [1] 大神整理的剑指Offer【所有面试题汇总】 [2] 【剑指Offer学习】【面试题58二叉树的下一个结点】代码结构参考
http://www.ho-use.cn/article/10821702.html

相关文章:

  • 个人备案的网站涉及到资金如何编辑自己的网站
  • 长沙网站优化分析网页视频提取在线工具
  • 基层建设刊物网站西语网站域名
  • 河北沧州泊头做网站的电话五莲网站建设公司
  • 网站建设公司前台订餐网站设计
  • 廉江网站开发公司seo高级教程
  • 无锡外贸网站开发猎头自己在哪个网站做单
  • 做网站制作的公司成都微信微网站建设
  • 企业营销型网站建设团队网站推广员如何做
  • 2018年做返利网站谷德设计网入口
  • 网站建设高级个人网站经营性备案
  • 曲阜网站建设多少钱沈阳中讯国际网站建设
  • 简单个人博客模板网站北京本地服务信息网
  • 做咨询类网站风险评估赤峰微网站建设
  • 娱乐企业网站建设房地产市场调查的途径有哪些
  • 建设网站管理规定权威的徐州网站建设
  • 做jsp网站的步骤广东省自然资源厅网站
  • 自助网站免费注册延边网站开发depawo
  • 网站备案号是什么微信棋牌游戏代理平台
  • 微信网站开发wordpress做动态页面
  • 招商加盟网站开发一叶子网站建设目标
  • 东莞横沥网站设计室内设计学校全国排名
  • 做瞹网站ppt公司简介模板
  • 家政网站怎么做怎么用wordpress
  • 网站建设的一般流程是东莞seo优化公司
  • 淘宝网做宝贝详情用哪个网站什么是百度快照
  • 网站建设优化佛山深圳南山区住房和建设局网站官网
  • 山西建设工程协会网站南宁市建设工程造价信息网
  • 张家界公司网站建设做导航网站不侵权吗
  • 在网站设计中 网页框架设计wordpress 栏目 伪静态