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;
        }
    };
  • 相关阅读:
    Cookies的实际存储位置
    搭建Git本地服务器
    在Tomcat中部署war
    Server.xml配置解析
    Tomcat配置详解,配置文件server.xml详解
    将centos7打造成桌面系统
    英语词汇大全
    商场/超市常见英语标识
    商务英语词汇大全
    常用繁体字大全
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433844.html
Copyright © 2011-2022 走看看