zoukankan      html  css  js  c++  java
  • 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.

    个人思路:

    1、选取数组的中点作为根节点,中点左半边的数作为根节点的左子树节点,右半边的数作为根节点的右子树节点,递归地对左子树和右子树进行处理

    2、递归结束条件为数组的起始点大于结束点

    代码:

     1 #include <stddef.h>
     2 #include <vector>
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 struct TreeNode
     8 {
     9     int val;
    10     TreeNode *left;
    11     TreeNode *right;
    12     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    13 };
    14 
    15 class Solution
    16 {
    17 public:
    18     TreeNode *sortedArrayToBST(vector<int> &num)
    19     {
    20         TreeNode *root = build(num, 0, num.size() - 1);
    21         //cout << root->val << endl;
    22         //preorder(root);
    23         return root;
    24     }
    25     void preorder(TreeNode *root)
    26     {
    27         if (root == NULL)
    28         {
    29             return;
    30         }
    31         cout << root->val << endl;
    32         preorder(root->left);
    33         preorder(root->right);
    34     }
    35 private:
    36     TreeNode *build(vector<int> &num, int start, int end)
    37     {
    38         if (start > end)
    39         {
    40             return NULL;
    41         }
    42 
    43         int middle = (start + end) / 2;
    44         TreeNode *treeNode = new TreeNode(num[middle]);
    45         treeNode->left = build(num, start, middle - 1);
    46         treeNode->right = build(num, middle + 1, end);
    47 
    48         //cout << treeNode->val << endl;
    49 
    50         return treeNode;
    51     }
    52 };
    53 
    54 int main()
    55 {
    56     Solution s;
    57     vector<int> v;
    58     v.push_back(1);
    59     v.push_back(2);
    60     v.push_back(3);
    61     v.push_back(4);
    62     v.push_back(5);
    63     v.push_back(6);
    64 
    65     TreeNode *root = s.sortedArrayToBST(v);
    66     s.preorder(root);
    67 
    68     system("pause");
    69     return 0;
    70 }
    View Code

    网上的方法都是类似的

  • 相关阅读:
    IntelliJ IDEA 常用快捷键
    IntelliJ IDEA 高效率配置
    Eclipse 设置保存代码时自动格式化
    SQL Server 事务隔离级别详解
    网络安全,互联网金融,高并发
    net user命令集合详解
    SQL不同服务器数据库之间的数据操作整理(完整版)
    sql优化
    在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理
    mvc和iis工作原理
  • 原文地址:https://www.cnblogs.com/laihaiteng/p/3795524.html
Copyright © 2011-2022 走看看