zoukankan      html  css  js  c++  java
  • LeetCode 108: Convert Sorted Array to Binary Search Tree DFS求解

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

    解题思路:

    1. 找到数组的中间节点将其置为根节点

    2. 左边的即为左子树

    3. 右边的即为右子树

    4. 递归求解

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode* sortBST(vector<int>& nums, int begin, int end){
            if(begin > end)
                return 0;
            int rootIndex = begin+(end-begin)/2;    //更简单的应该是    (begin+end)/2
            TreeNode* root = new TreeNode(nums[rootIndex]);
            root->left = sortBST(nums, begin, rootIndex-1);
            root->right = sortBST(nums, rootIndex+1, end);
            return root;
        }
        TreeNode* sortedArrayToBST(vector<int>& nums) {
            return sortBST(nums, 0, nums.size()-1);
        }
    };
    

      

  • 相关阅读:
    IE6兼容问题
    清除浮动的几种方法
    CSS的继承性和层叠性
    CSS基础选择器复习
    梦与醒,进与退
    CSS的入门概念
    HTML的入门概念
    弹性布局整理
    点击评论加入输入框(笔记)
    css命名(笔记)
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/6572363.html
Copyright © 2011-2022 走看看