leetcode108
- /**
- * Definition for a binary tree node.
- * public class TreeNode {
- * public int val;
- * public TreeNode left;
- * public TreeNode right;
- * public TreeNode(int x) { val = x; }
- * }
- */
- public class Solution
- {
- //private TreeNode Insert(TreeNode T, int x)
- //{
- // if (T == null)
- // {
- // T = new TreeNode(x);
- // return T;
- // }
- // else if (x < T.val)
- // {
- // T.left = Insert(T.left, x);
- // }
- // else if (x > T.val)
- // {
- // T.right = Insert(T.right, x);
- // }
- // return T;
- //}
- Queue<TreeNode> Q = new Queue<TreeNode>();
- List<TreeNode> TreeList = new List<TreeNode>();
- void InOrder(TreeNode node)
- {
- if (node != null)
- {
- if (node.left != null)
- {
- InOrder(node.left);
- }
- //中序处理
- TreeList.Add(node);
- if (node.right != null)
- {
- InOrder(node.right);
- }
- }
- }
- TreeNode BFS(int count)
- {
- int index = ;
- TreeNode root = null;
- while (Q.Count > && index < count)
- {
- var n = Q.Dequeue();
- if (n == null)
- {
- index++;
- n = new TreeNode(index);
- root = n;
- Q.Enqueue(n);
- }
- else
- {
- if (n.left == null && index < count)
- {
- index++;
- n.left = new TreeNode(index);
- Q.Enqueue(n.left);
- }
- if (n.right == null && index < count)
- {
- index++;
- n.right = new TreeNode(index);
- Q.Enqueue(n.right);
- }
- }
- }
- return root;
- }
- public TreeNode SortedArrayToBST(int[] nums)
- {
- var count = nums.Length;
- Q.Enqueue(null);
- var root = BFS(count);
- InOrder(root);
- for (int i = ; i < TreeList.Count; i++)
- {
- TreeList[i].val = nums[i];
- }
- return root;
- }
- }
https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/#/description
补充一个python的实现,使用递归处理:
- class Solution:
- def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
- n = len(nums)
- if n == :#终止条件,返回空
- return None
- if n == :#终止条件,返回单节点
- return TreeNode(nums[])
- mid = n //
- root = TreeNode(nums[mid])#将数组从中间一分为二
- root.left = self.sortedArrayToBST(nums[:mid])#左子树
- root.right = self.sortedArrayToBST(nums[mid+:])#右子树
- return root#返回
leetcode108的更多相关文章
- [Swift]LeetCode108. 将有序数组转换为二叉搜索树 | Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Fo ...
- [leetcode-108,109] 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...
- LeetCode108.将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...
- LeetCode108——Convert Sorted Array to Binary Search Tree
题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...
- LeetCode108 Convert Sorted Array to Binary Search Tree
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. (M ...
- LeetCode108 将有序数组转为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...
- LeetCode108.有序数组转二叉搜索树
题目 1 class Solution { 2 public: 3 TreeNode* sortedArrayToBST(vector<int>& nums) { 4 if(num ...
- c++算法实现(一) - 递归和初始化
递归 写递归函数经常出错,提醒自己两个规则: 1. 一般来说递归函数中不应该出现for.while之类的循环语句, 因为递归就是循环的另外一种实现: 2. 注意基线条件,具体参考<算法图解> ...
- leetcode_二叉树篇_python
主要是深度遍历和层序遍历的递归和迭代写法. 另外注意:因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中). 所有题目首先考虑root否是空.有的 ...
随机推荐
- 《DSP using MATLAB》Problem 3.6
逆DTFT定义如下: 需要求积分,
- CSS 属性用法备忘录
☆ margin: 0; padding: 0; :{ 顺时针 margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: ...
- Hadoop伪分布模式操作
http://blog.csdn.net/wangloveall/article/details/20195813 摘要:本文介绍Hadoop伪分布模式操作,适合于Hadoop学习.开发和调试. 关键 ...
- lets encrypt 申请nginx 泛域名
1. 安装certbot工具 wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto 2. 申请通配符域名 ./certbot-au ...
- Why my setting does not work?
lab mypc server7000 -> 5900 1080 -> 10800 10800 -> inter ...
- php单例模式实现对象只被创建一次 mysql单例操作类
这是我在php面试题中遇到的一道试题,单例模式按字面来看就是某一个类只有一个实例,这样做的好处还是很大的,比如说数据库的连接,我们只需要实例化一次,不需要每次都去new了,这样极大的降低了资源的耗费. ...
- vue2.0 不引用第三方包的情况下实现嵌套对象的拖拽排序功能
先上一张效果图,然后再上代码(由于只做效果,未做数据相关的处理:实际处理数据时不修改 dom 元素,只是利用 dom 元素传递数据,然后需改数据,靠数据驱动效果) <div :id=" ...
- bzoj1034 泡泡堂
Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...
- 中点Brehensam画线算法
#include<stdio.h> #include<stdlib.h> #include"graphics.h" //函数声明 void MidBreha ...
- Appium简介和初步使用520-1
1.移动互联网架构简化图 2.Appium的优势 * 多种开发模式支持 native hybrid webview * 多平台支持 android ios * 跨语言 java python ruby ...