zoukankan      html  css  js  c++  java
  • [leetcode]Unique Binary Search Trees II

    这道题比I难多了。由于是所有答案,肯定是全搜索。只能递归,虽然感觉效率很低,但似乎是唯一的办法,果然最后看到的测试用例也只有9个,再多估计就全超时了。

    public class Solution {
        public ArrayList<TreeNode> generateTrees(int n) {
            return generateTrees(1, n);
        }
        
        private ArrayList<TreeNode> generateTrees(int left, int right)
        {
            ArrayList<TreeNode> ans = new ArrayList<TreeNode>();
            if (left > right)
            {
                ans.add(null);
                return ans;
            }
            for (int i = left; i <= right; i++)
            {
                ArrayList<TreeNode> lefts = generateTrees(left, i-1);
                ArrayList<TreeNode> rights = generateTrees(i+1, right);
                for (int j = 0; j < lefts.size(); j++)
                {
                    for (int k = 0; k < rights.size(); k++)
                    {
                        TreeNode root = new TreeNode(i);
                        root.left = lefts.get(j);
                        root.right = rights.get(k);
                        ans.add(root);
                    }
                }
            }
            return ans;
        }
    }
    

      

  • 相关阅读:
    vue中使用 canvas给页面添加水印
    c++ get keyboard event
    sublime text c++ makefile
    dddd
    songwenxin
    wechat
    ddd
    log
    v3
    xiaoxiaole
  • 原文地址:https://www.cnblogs.com/lautsie/p/3354720.html
Copyright © 2011-2022 走看看