[LeetCode] Unique Binary Search Trees

来源:互联网 发布:马云 阿里云 编辑:程序博客网 时间:2024/05/02 22:53

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

问题描述:给定一个整数n,可以得到多少个不相同的BST。

在二叉树问题中,最开始想到的应该是递归。对于本题而言,可以考虑将1~n中的每个数作为根节点,然后左边的数是左子树,右边的节点是右子树,将所有该根节点的左右子树的乘积相加即可。

class Solution {public:    int numtree(int left, int right)    {        int i = 0, num = 0;        if(left >= right)            return 1;        for(i = left; i <= right; i++) {            num += numtree(left, i-1) * numtree(i+1, right);        }        return num;    }    int numTrees(int n) {        // Note: The Solution object is instantiated only once and is reused by each test case.        return numtree(0, n-1);    }};


原创粉丝点击