一、题目

  1、审题

  2、分析

   给出一个有序的不重复的整形数组,组成一个二路平衡二叉树(左右子树高度差不超过1)。

二、解答

  1、思路:

    方法一、

      采用递归的方式。(像二分查找)

      ①、为了保持平衡,查找数组的下标中间的数 nums[mid],作为 root;

      ②、(0, mid - 1) 作为 root 的左子树,(mid+1, end) 作为root 的右子树;

      ③、重复 ①、②操作。

public TreeNode sortedArrayToBST(int[] nums) {return helperSortedArrayToBST(nums, 0, nums.length - 1);}private TreeNode helperSortedArrayToBST(int[] nums, int start, int end) {if(start > end)return null;int median = (start + end) / 2;TreeNode root = new TreeNode(nums[median]);root.left = helperSortedArrayToBST(nums, start, median - 1);root.right = helperSortedArrayToBST(nums, median + 1, end);return root;}

  方法二、

    采用循环迭代方式。

    ①、采用一个队列存储临时节点 node,一个队列存储数组此时的开始(start)、结束(end)下标。

    ② 若 start <= end,则 node 节点值 为 nums[(start + end)/2];

public TreeNode sortedArrayToBST(int[] nums) {int len = nums.length;if ( len == 0 ) { return null; }// 0 as a placeholderTreeNode head = new TreeNode(0); Queue<TreeNode> nodeStack = new LinkedList<>();nodeStack.add(head);Queue<Integer> indexStack = new LinkedList<>();indexStack.add(0);indexStack.add(len-1);while(!nodeStack.isEmpty()) {TreeNode currNode = nodeStack.poll();int left = indexStack.poll();int right = indexStack.poll();int mid = (left + right) / 2;currNode.val = nums[mid];if(left <= mid - 1) {currNode.left = new TreeNode(0);nodeStack.add(currNode.left);indexStack.add(left);indexStack.add(mid - 1);}if(right >= mid + 1) {currNode.right = new TreeNode(0);nodeStack.add(currNode.right);indexStack.add(mid+1);indexStack.add(right);}}return head;}

  

转载于:https://www.cnblogs.com/skillking/p/9734446.html

108. Convert Sorted Array to Binary Search Tree相关推荐

  1. 【数组递归构造二叉树】LeetCode 108. Convert Sorted Array to Binary Search Tree

    LeetCode 108. Convert Sorted Array to Binary Search Tree Solution1:我的答案 构造二叉树利用递归 /*** Definition fo ...

  2. LeetCode: 108. Convert Sorted Array to Binary Search Tree

    题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...

  3. LeetCode 108. Convert Sorted Array to Binary Search Tree

    题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...

  4. leetcode python3 简单题108. Convert Sorted Array to Binary Search Tree

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百零八题 (1)题目 英文: Given an array where elem ...

  5. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)

    题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题解 经典二分,不解释了,直接看代码 /*** ...

  6. Convert Sorted Array to Binary Search Tree - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Convert Sorted Array to Binary Search Tree - LeetCode 注意点 不要访问空结点 题目要求的是平衡二叉搜 ...

  7. LeetCode: Convert Sorted Array to Binary Search Tree 解题报告

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  8. Convert Sorted Array to Binary Search Tree With Minimal Height

    Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height. Exa ...

  9. [LeetCode] Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Hi ...

最新文章

  1. Sahi (2) —— https/SSL配置(102 Tutorial)
  2. 面试笔记——C++11新特性
  3. 二十一、“一枝一叶一花语,一生一世一英名。”(2021.5.29)
  4. 智慧树python答案内蒙古科技大学_2020年_知到_打开企业形象设计之门(内蒙古科技大学)_答案护理人文修养_智慧树_期末答案...
  5. 算法 --- reduce的使用.
  6. 大叔手记(12):我的一次面试经历(谈大叔如何应对面试官)
  7. discuz x2.5插件开发傻瓜图文教程,用demo说话
  8. 工信部:不得利用“携号转网”实施恶性竞争行为
  9. 怎样在Xcode 4下编译发布与提交App到AppStore?(转)
  10. 朗读评价语言集锦_表扬朗读好的评语简短
  11. 使用微信支付购买《微信公众平台最佳实践》
  12. html菜单不动属性,html5规定元素的上下文菜单属性contextmenu
  13. (一) MySQL学习笔记:MySQL安装图解
  14. 动力学系统simulink建模分析
  15. 记参加2008磨房深圳百公里活动
  16. 邮件监控云上脚本执行进度
  17. json标准格式举例_json几个小例子
  18. 【计算机组成原理】计算机系统结构笔记:合集
  19. 计算机键盘fn,USB键盘Fn功能键调节方法
  20. java months between,ORACLE函数MONTHS_BETWEEN

热门文章

  1. 缓存服务器协议有哪些,HTTP 协议的缓存机制概述
  2. 服务器端使用sendRedirect跳转到客户端异常
  3. 计算机mooc操作测试视频,计算机基础课MOOC视频的制作方法.doc
  4. html导航栏代码跳转,微信小程序自定义底部导航栏tabBar(含跳转页面wx.navigateTo)...
  5. list对oracle结果集排序了_详解SQL窗口函数和分组排序函数
  6. linux安装python_VTK:华为笔记本电脑+深度deepin-linux+python下安装和入门
  7. mysql5.7重置密码windows_MySql 5.7 for Windows 重置root密码
  8. php redis新增数据类型,Redis有哪几种数据类型
  9. kafka 脚本发送_NWPC消息平台:在ecFlow系统中发送产品事件消息
  10. mysql子查询的方式_分布式系统中一种迭代处理MYSQL子查询的方法