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

品牌手机网站开发服装网站建设风格

品牌手机网站开发,服装网站建设风格,无锡网络公司平台,网站维护源码自适应完全二叉树是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作&#xf…

完全二叉树是每一层(除最后一层外)都是完全填充(即,节点数达到最大)的,并且所有的节点都尽可能地集中在左侧。

设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作:

  • CBTInserter(TreeNode root) 使用头节点为 root 的给定树初始化该数据结构;
  • CBTInserter.insert(int v) 向树中插入一个新节点,节点类型为 TreeNode,值为 v 。使树保持完全二叉树的状态,并返回插入的新节点的父节点的值;
  • CBTInserter.get_root() 将返回树的头节点。
示例 1:输入:inputs = ["CBTInserter","insert","get_root"], inputs = [[[1]],[2],[]]
输出:[null,1,[1,2]]
示例 2:输入:inputs = ["CBTInserter","insert","insert","get_root"], inputs = [[[1,2,3,4,5,6]],[7],[8],[]]
输出:[null,3,4,[1,2,3,4,5,6,7,8]]

题目分析

由于插入操作要找到最后一层的第一个空缺的位置,所以很自然的就想到了使用层序遍历的方法,由于插入函数返回的是插入位置的父结点,所以在层序遍历的时候,只要遇到某个结点的左子结点或者右子结点不存在,则跳出循环,则这个残缺的父结点刚好就在队列的首位置。

那么在插入函数时,只要取出这个残缺的父结点,判断若其左子结点不存在,说明新的结点要连接在左子结点上,否则将新的结点连接在右子结点上,并把此时的左右子结点都存入队列中,并将之前的队首元素移除队列即可。

这道题目是层序遍历的变种。关键是实现插入时返回对应的头节点。

使用队列,队头维护上一层中从左边开始第一个左节点或者右节点为空的节点。

题目并不是让我们实现一个完全二叉树,而是给定一个完全二叉树的头,实现插入器。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class CBTInserter {TreeNode root;Queue<TreeNode> q;// 用完全二叉树初始化的数据结构public CBTInserter(TreeNode root) {this.root=root;q=new LinkedList();q.offer(root);//bfswhile(!q.isEmpty()){TreeNode tmp=q.peek();// 维护上一层中从左边开始第一个左节点或者右节点为空的节点if(tmp.left==null || tmp.right==null){break;}q.offer(tmp.left);q.offer(tmp.right);q.poll();}}public int insert(int v) {TreeNode node=new TreeNode(v);TreeNode t=q.peek();if(t.left==null){//        5//       / \// 插入位置 t.left=node;}else{t.right=node;q.offer(t.left);q.offer(t.right);//出队,转移到下一个不完全的节点q.poll();}return t.val;}public TreeNode get_root() {return root;}
}/*** Your CBTInserter object will be instantiated and called as such:* CBTInserter obj = new CBTInserter(root);* int param_1 = obj.insert(v);* TreeNode param_2 = obj.get_root();*/
文章参考

https://www.cnblogs.com/wwj99/p/12298419.html

http://www.yayakq.cn/news/394559/

相关文章:

  • 如何做谷歌seo推广哈尔滨百度seo代理
  • 丽江旅游网站建设结论怎么宣传自己的店铺
  • 怎么在自己电脑上建设网站什么网站算是h5做的
  • 长沙做网站找哪家好电子制作网站
  • 萝岗区营销型网站建设新媒体营销h5制作网站
  • 做一个网站提高网站规范化建设
  • 苏中建设 网站网站备案期间可以建站
  • asp网站只能打开首页为什么电脑有些网页打不开
  • 做美食类网站分析wordpress 固定链接设置
  • 苏州网站搜索引擎优化网站建设的电话销售好做不
  • 网站可以建几个人网站关键词工具有哪些
  • 黑河城乡建设局网站phpcms建站教程
  • 网站开发湛江青岛企业网站建站模板
  • 做一个内容网站多少钱网站建设网页设计做网站
  • 企业网站建设的实验报告阿里巴巴网站建设的目的
  • 济南网站建设就选搜点网络ok电子商务平台包括哪些类型
  • 网站怎么做子网页自己建设自己的网站
  • 网站模板分什么类型广告设计与制作主修课程有哪些
  • jq网站登录记住密码怎么做建筑网站的研究背景与意义
  • 做网站安卓客户端烟台建设信息网站
  • 江苏宜安建设有限公司网站什么网站专门做图片
  • 网站建设项目软件开发招标文件17网一起做网店潮汕
  • 文化旅游做的好的网站jsp做网站实例教程
  • 鄂州网站建设网络公司wordpress下载及安装
  • 资格证网站怎么做有谁做分销网站
  • 网站模板怎么套用创新设计产品
  • 有没有让人做问卷的网站电脑网页无法访问如何解决
  • 石家庄模板建站e福州首页
  • 雅安网站开发天元建设集团有限公司长清分公司
  • 上海黄浦 网站建设做医院网站