zoukankan      html  css  js  c++  java
  • Leetcode-1008 Construct Binary Search Tree from Preorder Traversal(先序遍历构造二叉树)

     1 //[8,5,1,7,10,12]
     2 class Solution
     3 {
     4     public:
     5         TreeNode* solve(vector<int>& preorder,int l,int r)
     6         {
     7             if(l>r)
     8                 return NULL;
     9             TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
    10             root -> val = preorder[l];
    11             if(l==r)
    12             {
    13                 root -> left = root -> right = NULL;
    14                 return root;
    15             }
    16             int nr = -1;
    17             for(int i = l+1;i <= r;i ++)
    18             {
    19                 if(nr==-1 && preorder[i]>root->val)
    20                     nr = i;
    21             }
    22             if(nr==-1)
    23             {
    24                 root->right = NULL;
    25                 root->left = solve(preorder,l+1,r);
    26                 return root;
    27             }
    28             root -> left = solve(preorder,l+1,nr-1);
    29             root -> right = solve(preorder,nr,r);
    30             return root;
    31         }
    32         TreeNode* bstFromPreorder(vector<int>& preorder)
    33         {
    34             return solve(preorder,0,preorder.size()-1);
    35         }
    36 };

    这题应该叫先序遍历构建二叉搜索树。第一个肯定是根节点,往后找第一个比根节点大的数,那个就是右子树的根节点。根节点下一个就是左子树根节点。左子树根节点到右子树根节点之间就是左子树,右子树根节点到最后就是右子树。

  • 相关阅读:
    PostGIS解压版安装
    gulp监听文件变化,并拷贝到指定目录
    pre在火狐中不换行
    Undefined symbols for architecture i386: "_crc32", referenced from:
    响应式自动化开发流程-Windows 版
    Gulp入门教程
    SVG折线图
    git-版本控制
    log4j
    CSS:描述样式
  • 原文地址:https://www.cnblogs.com/Asurudo/p/10504878.html
Copyright © 2011-2022 走看看