依然还是不大懂Unique Binary Tree里的DP思想



  • 我是left right各自返回一个List之后将left right List中的组合起来。

    List getSubTree(int start, int end) {
    List list = new LinkedList();
    if (start > end) return list
    if (start == end) {
    Node node = new Node(start);
    list.add(node);
    return list;
    }

    for (int i = start; i <= end; i++) {
    LinkedList left = getSubTree(start, i - 1);
    LinkedList right = getSubTree(i + 1, end);

    for (Node nodeLeft : left)
    	for (Node nodeRigth: right) {
    		Node root = new Node(i);
    		root.right = nodeRight;
    		root.left = nodeLeft;
    		list.add(root);
    	}
    

    }
    return list;
    }

    因为如果i=4的话,那么left里的tree都是有3个结点的,right里的tree都是有6个结点的,通过组合就可以得到i=4的所有的tree了。我感觉并不需要UNIque BST 1里的计算



  • 不好意思,提交了以后才注意到格式有点乱


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待