• leetcode 95. 不同的二叉搜索树II


    题目描述:

    给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。

    输入: 3
    输出:
    [
      [1,null,3,2],
      [3,2,null,1],
      [3,1,null,null,2],
      [2,1,3],
      [1,null,2,null,3]
    ]
    解释:
    以上的输出对应以下 5 种不同结构的二叉搜索树:

    1 3 3 2 1
    / / /
    3 2 1 1 3 2
    / /
    2 1 2 3

    思路分析:

    树的题目,首先就是用递归思想来做。自己一开始的做法,是不停的去拷贝对象,这样容易出错,且很繁琐。参考了别人的代码,直接用指针简洁了很多。

    代码:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<TreeNode*> generateTreesCore(int l, int r)
    13     {
    14         vector<TreeNode*>ans;
    15         if(l>r)
    16             ans.push_back(NULL);
    17         else
    18         {
    19             for(int i=l; i<=r; i++)
    20             {
    21                 vector<TreeNode*> left = generateTreesCore(l, i-1);
    22                 vector<TreeNode*> right = generateTreesCore(i+1, r);
    23                 for(int idx_l=0; idx_l<left.size(); idx_l++)
    24                 {
    25                     for(int idx_r=0; idx_r<right.size(); idx_r++)
    26                     {
    27                         TreeNode* cur = new TreeNode(i);
    28                         cur->left = left[idx_l];
    29                         cur->right = right[idx_r];
    30                         ans.push_back(cur);
    31                     }
    32                 }
    33             }
    34         }
    35         return ans;
    36     }
    37     vector<TreeNode*> generateTrees(int n) {
    38         vector<TreeNode*> res;
    39         if(n<=0)
    40             return res;
    41         res = generateTreesCore(1, n);
    42         return res;
    43     }
    44 };
  • 相关阅读:
    2021NUAA暑假集训 Day3 题解
    2021NUAA暑假集训 Day2 题解
    2021NUAA暑期模拟赛部分题解
    CodeForces 1038D Slime
    UVA 11149 Power of Matrix
    UVA 10655 Contemplation! Algebra
    UVA 10689 Yet another Number Sequence
    HDU 4549 M斐波那契数列
    HDU 4990 Reading comprehension
    CodeForces 450B Jzzhu and Sequences
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11331995.html
Copyright © 2020-2023  润新知