zoukankan      html  css  js  c++  java
  • Leetcode109. Convert Sorted List to Binary Search Tree有序链表转换二叉搜索树

    给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

    本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

    示例:

    给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / -3 9 / / -10 5

    
    class Solution {
    public:
        TreeNode* sortedListToBST(ListNode* head) 
        {
            vector<int> order;
            while(head)
            {
                order.push_back(head ->val);
                head = head ->next;
            }
            return buildBST(order);
        }
    
        TreeNode* buildBST(vector<int> order)
        {
            if(order.size() == 0)
                return NULL;
            if(order.size() == 1)
                return new TreeNode(order[0]);
            int mid = (0 + order.size()) / 2;
            TreeNode *root = new TreeNode(order[mid]);
            vector<int> v1(order.begin(), order.begin() + mid);
            vector<int> v2(order.begin() + mid + 1, order.end());
            root ->left = buildBST(v1);
            root ->right = buildBST(v2);
            return root;
        }
    };
  • 相关阅读:
    6章-项目进度管理-day5
    常规正则表达式
    axios删除接口
    elk
    英语笔记
    升级打怪
    用computed实现watch的保持子组件与父组件值同步
    vertical-align不生效的问题
    css居右
    使用maven创建spring工程出现配置文件打不开/不存在的错误
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433844.html
Copyright © 2011-2022 走看看