Id | 1864 |
Title | Binary Trees' Order |
Tags | recursion combinatorics |
Brief solution | 首先应该了解不同的二叉树的数目就是卡特兰数。其次递归地解析用序列表示的数。在解析的同时,可以先解决子问题:左右子树的序号和结点数目,记为l_idx, r_idx, l_count, r_count。在知道这些信息后,利用卡特兰数计算出当前子树的序号。首先计算出右边的结点数大于r_count的数目。其次再加上左边的树比当前左子树小而右边是结点为r_count的树的数目。再次加上左边的树和左边相同,而右边的树比当前右子树小的数目。最后加上结点数比当前子树小的所有的树的数目(再最后还要加个1)。注意,可能有输入是个空串的case。 |