题解 | #不同的二叉搜索树 ii#

不同的二叉搜索树 ii

http://www.nowcoder.com/practice/98aaaefacaca44b9b4f2f2bd75780664

  1. 判断函数终止时,null值加入到res中很关键。
  2. 选定某个根节点时,递归得到他所有可能的左子树和右子树。
  3. 同一根节点下的左子树和右子树可以任意组合。
  4. 得到最后的res。
public class Solution {
    public ArrayList<TreeNode> generateTrees (int n) {
        return help(1,n);
    }

    public ArrayList<TreeNode> help(int start , int end){

        ArrayList<TreeNode> res = new ArrayList<>();

        if(start > end)
        {
            res.add(null);
            return res;
        }

        for(int i = start ; i <= end ; i++)
        {
            ArrayList<TreeNode> left = help(start,i-1);
            ArrayList<TreeNode> right = help(i+1,end);

            for(TreeNode l : left)
            {
                for(TreeNode r : right)
                {
                    TreeNode root = new TreeNode(i);
                    root.left = l;
                    root.right = r;
                    res.add(root);
                }
            }

        }
        return res;
    }
}
全部评论

相关推荐

三分入剑:我觉得还是学历问题 如果你真的想要进大厂不想在小厂的话读个211得研究生吧 我感觉简历还没你好呢 我都实习了俩月了 我投了一百多份能投出20多份简历 能面试六七次 我们部门只招研究生了都 现在连9本都很难找到像样的大厂了 你又没打过rm这种 我觉得想要进步的话就考个研究生吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务