Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125772
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 354
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-01 15:34
个人简介

不晓得说啥子

文章分类

全部博文(42)

文章存档

2015年(41)

2014年(1)

我的朋友

分类: C/C++

2015-04-22 10:50:34


问题可以归结为:给定一颗有节点【1--n-1】组成 的任意一颗搜索二叉树,现往里面插入一个节点,形成一个新的搜索二叉树。



点击(此处)折叠或打开

  1. class Solution {
  2. public:

  3.     TreeNode *clonetree(TreeNode *a){
  4.         TreeNode *b = new TreeNode(a->val);
  5.         if(a->left) b->left = clonetree(a->left);
  6.         if(a->right) b->right = clonetree(a->right);
  7.         return b;
  8.     }
  9.     vector<TreeNode *> generateTrees(int n) {
  10.         TreeNode *nowright;
  11.         TreeNode *tmpnode;
  12.         vector<TreeNode *> Res;
  13.         if(n==0) {
  14.          Res.push_back(NULL);
  15.          return Res;
  16.         }
  17.         vector<TreeNode *> tmp;
  18.         TreeNode *a = new TreeNode(1);
  19.         Res.push_back(a);
  20.         for(int i=2; i<=n; i++){
  21.             while(!Res.empty()){
  22.                 a = Res.back();
  23.                 Res.pop_back();
  24.                 TreeNode *newhead = new TreeNode(i);
  25.                 newhead->left = a;
  26.                 tmp.push_back(newhead);
  27.                 nowright = a;
  28.                 while(1){
  29.                     TreeNode *b;
  30.                     b = clonetree(a);
  31.                     TreeNode *newnode = new TreeNode(i);
  32.                     tmpnode = b;
  33.                     while(tmpnode->val != nowright->val) tmpnode = tmpnode->right;
  34.                     newnode->left = tmpnode->right;
  35.                     tmpnode->right = newnode;
  36.                     tmp.push_back(b);
  37.                     nowright = nowright->right;
  38.                     if(nowright == NULL) break;
  39.                 }
  40.             }
  41.             Res.swap(tmp);
  42.         }
  43.         return Res;
  44.     }
  45. }



阅读(1536) | 评论(0) | 转发(0) |
0

上一篇:shutdown函数

下一篇:linuxThreads与NPTL的区别

给主人留下些什么吧!~~